all:
  hosts:
    ubuntu-noble:
      ansible_connection: ssh
      ansible_host: 81.163.193.233
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: a861c0eb-7656-47d9-8df5-262dc9fcd65a
        host_id: 39b0ac6b1bd0318d0940af02f75334312eeed4057396383c275283da
        interface_ip: 81.163.193.233
        label: ubuntu-noble
        private_ipv4: 10.128.0.110
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.233
        public_ipv6: ''
        region: null
        slot: null
  vars:
    zuul:
      _inheritance_path:
      - '<Job base branches: None source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job yamllint branches: None source: osism/zuul-jobs/.zuul.yaml@main#59>'
      - '<Job yamllint branches: None source: osism/container-images/.zuul.yaml@main#2>'
      ansible_version: '8'
      attempts: 1
      branch: main
      build: 0c5daefbee664201920a25bacd3fa2e9
      buildset: 221edd9e84ab4e67bae90c2105f42f68
      change: '709'
      change_message: "chore(deps): update netbox\n\nThis PR contains the following\
        \ updates:\n\n| Package | Type | Update | Change | Age | Adoption | Passing\
        \ | Confidence |\n|---|---|---|---|---|---|---|---|\n| [ghcr.io/astral-sh/uv](https://redirect.github.com/astral-sh/uv)\
        \ | final | minor | `0.6.11` -> `0.7.2` | [![age](https://developer.mend.io/api/mc/badges/age/docker/ghcr.io%2fastral-sh%2fuv/0.7.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/ghcr.io%2fastral-sh%2fuv/0.7.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/ghcr.io%2fastral-sh%2fuv/0.6.11/0.7.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/ghcr.io%2fastral-sh%2fuv/0.6.11/0.7.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n| [netbox-plugin-dns](https://redirect.github.com/peteeckel/netbox-plugin-dns)\
        \ |  | minor | `==1.2.6` -> `==1.3.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/netbox-plugin-dns/1.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/netbox-plugin-dns/1.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/netbox-plugin-dns/1.2.6/1.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/netbox-plugin-dns/1.2.6/1.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n| [netbox-secrets](https://redirect.github.com/Onemind-Services-LLC/netbox-secrets)\
        \ |  | patch | `==2.2.0` -> `==2.2.1` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/netbox-secrets/2.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/netbox-secrets/2.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/netbox-secrets/2.2.0/2.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/netbox-secrets/2.2.0/2.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n| [quay.io/netboxcommunity/netbox](https://redirect.github.com/netbox-community/netbox-docker)\
        \ |  | minor | `v4.2.2` -> `v4.3.0` | [![age](https://developer.mend.io/api/mc/badges/age/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.2/v4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.2/v4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n| [quay.io/netboxcommunity/netbox](https://redirect.github.com/netbox-community/netbox-docker)\
        \ | stage | minor | `v4.2.2` -> `v4.3.0` | [![age](https://developer.mend.io/api/mc/badges/age/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.2/v4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.2/v4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n\n---\n\n### Release Notes\n\n<details>\n<summary>astral-sh/uv (ghcr.io/astral-sh/uv)</summary>\n\
        \n### [`v0.7.2`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#072)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.7.1...0.7.2)\n\
        \n##### Enhancements\n\n-   Improve trace log for retryable errors ([#&#8203;13228](https://redirect.github.com/astral-sh/uv/pull/13228))\n\
        -   Use \"error\" instead of \"warning\" for self-update message ([#&#8203;13229](https://redirect.github.com/astral-sh/uv/pull/13229))\n\
        -   Error when `uv version` is used with project-specific flags but no project\
        \ is found ([#&#8203;13203](https://redirect.github.com/astral-sh/uv/pull/13203))\n\
        \n##### Bug fixes\n\n-   Fix incorrect virtual environment invalidation for\
        \ pre-release Python versions ([#&#8203;13234](https://redirect.github.com/astral-sh/uv/pull/13234))\n\
        -   Fix patching of `clang` in managed Python sysconfig ([#&#8203;13237](https://redirect.github.com/astral-sh/uv/pull/13237))\n\
        -   Respect `--project` in `uv version` ([#&#8203;13230](https://redirect.github.com/astral-sh/uv/pull/13230))\n\
        \n### [`v0.7.1`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#071)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.7.0...0.7.1)\n\
        \n##### Enhancement\n\n-   Add support for BLAKE2b-256 ([#&#8203;13204](https://redirect.github.com/astral-sh/uv/pull/13204))\n\
        \n##### Bugfix\n\n-   Revert fix handling of authentication when encountering\
        \ redirects ([#&#8203;13215](https://redirect.github.com/astral-sh/uv/pull/13215))\n\
        \n### [`v0.7.0`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#070)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.17...0.7.0)\n\
        \nThis release contains various changes that improve correctness and user\
        \ experience, but could break some workflows; many changes have been marked\
        \ as breaking out of an abundance of caution. We expect most users to be able\
        \ to upgrade without making changes.\n\n##### Breaking changes\n\n-   **Update\
        \ `uv version` to display and update project versions ([#&#8203;12349](https://redirect.github.com/astral-sh/uv/pull/12349))**\n\
        \n    Previously, `uv version` displayed uv's version. Now, `uv version` will\
        \ display or update the project's version. This interface was [heavily requested](https://redirect.github.com/astral-sh/uv/issues/6298)\
        \ and, after much consideration, we decided that transitioning the top-level\
        \ command was the best option.\n\n    Here's a brief example:\n\n    ```console\n\
        \    $ uv init example\n    Initialized project `example` at `./example`\n\
        \    $ cd example\n    $ uv version\n    example 0.1.0\n    $ uv version --bump\
        \ major\n    example 0.1.0 => 1.0.0\n    $ uv version --short\n    1.0.0\n\
        \    ```\n\n    If used outside of a project, uv will fallback to showing\
        \ its own version still:\n\n    ```console\n    $ uv version\n    warning:\
        \ failed to read project: No `pyproject.toml` found in current directory or\
        \ any parent directory\n      running `uv self version` for compatibility\
        \ with old `uv version` command.\n      this fallback will be removed soon,\
        \ pass `--preview` to make this an error.\n\n    uv 0.7.0 (4433f41c9 2025-04-29)\n\
        \    ```\n\n    As described in the warning, `--preview` can be used to error\
        \ instead:\n\n    ```console\n    $ uv version --preview\n    error: No `pyproject.toml`\
        \ found in current directory or any parent directory\n    ```\n\n    The previous\
        \ functionality of `uv version` was moved to `uv self version`.\n-   **Avoid\
        \ fallback to subsequent indexes on authentication failure ([#&#8203;12805](https://redirect.github.com/astral-sh/uv/pull/12805))**\n\
        \n    When using the `first-index` strategy (the default), uv will stop searching\
        \ indexes for a package once it is found on a single index. Previously, uv\
        \ considered a package as \"missing\" from an index during authentication\
        \ failures, such as an HTTP 401 or HTTP 403 (normally, missing packages are\
        \ represented by an HTTP 404). This behavior was motivated by unusual responses\
        \ from some package indexes, but reduces the safety of uv's index strategy\
        \ when authentication fails. Now, uv will consider an authentication failure\
        \ as a stop-point when searching for a package across indexes. The `index.ignore-error-codes`\
        \ option can be used to recover the existing behavior, e.g.:\n\n    ```toml\n\
        \    [[tool.uv.index]]\n    name = \"pytorch\"\n    url = \"https://download.pytorch.org/whl/cpu\"\
        \n    ignore-error-codes = [401, 403]\n    ```\n\n    Since PyTorch's indexes\
        \ always return a HTTP 403 for missing packages, uv special-cases indexes\
        \ on the `pytorch.org` domain to ignore that error code by default.\n-   **Require\
        \ the command in `uvx <name>` to be available in the Python environment ([#&#8203;11603](https://redirect.github.com/astral-sh/uv/pull/11603))**\n\
        \n    Previously, `uvx` would attempt to execute a command even if it was\
        \ not provided by a Python package. For example, if we presume `foo` is an\
        \ empty Python package which provides no command, `uvx foo` would invoke the\
        \ `foo` command on the `PATH` (if present). Now, uv will error early if the\
        \ `foo` executable is not provided by the requested Python package. This check\
        \ is not enforced when `--from` is used, so patterns like `uvx --from foo\
        \ bash -c \"...\"` are still valid. uv also still allows `uvx foo` where the\
        \ `foo` executable is provided by a dependency of `foo` instead of `foo` itself,\
        \ as this is fairly common for packages which depend on a dedicated package\
        \ for their command-line interface.\n-   **Use index URL instead of package\
        \ URL for keyring credential lookups ([#&#8203;12651](https://redirect.github.com/astral-sh/uv/pull/12651))**\n\
        \n    When determining credentials for querying a package URL, uv previously\
        \ sent the full URL to the `keyring` command. However, some keyring plugins\
        \ expect to receive the *index URL* (which is usually a parent of the package\
        \ URL). Now, uv requests credentials for the index URL instead. This behavior\
        \ matches `pip`.\n-   **Remove `--version` from subcommands ([#&#8203;13108](https://redirect.github.com/astral-sh/uv/pull/13108))**\n\
        \n    Previously, uv allowed the `--version` flag on arbitrary subcommands,\
        \ e.g., `uv run --version`. However, the `--version` flag is useful for other\
        \ operations since uv is a package manager. Consequently, we've removed the\
        \ `--version` flag from subcommands \u2014 it is only available as `uv --version`.\n\
        -   **Omit Python 3.7 downloads from managed versions ([#&#8203;13022](https://redirect.github.com/astral-sh/uv/pull/13022))**\n\
        \n    Python 3.7 is EOL and not formally supported by uv; however, Python\
        \ 3.7 was previously available for download on a subset of platforms.\n- \
        \  **Reject non-PEP 751 TOML files in install, compile, and export commands\
        \ ([#&#8203;13120](https://redirect.github.com/astral-sh/uv/pull/13120), [#&#8203;13119](https://redirect.github.com/astral-sh/uv/pull/13119))**\n\
        \n    Previously, uv treated arbitrary `.toml` files passed to commands (e.g.,\
        \ `uv pip install -r foo.toml` or `uv pip compile -o foo.toml`) as `requirements.txt`-formatted\
        \ files. Now, uv will error instead. If using PEP 751 lockfiles, use the standardized\
        \ format for custom names instead, e.g., `pylock.foo.toml`.\n-   **Ignore\
        \ arbitrary Python requests in version files ([#&#8203;12909](https://redirect.github.com/astral-sh/uv/pull/12909))**\n\
        \n    uv allows arbitrary strings to be used for Python version requests,\
        \ in which they are treated as an executable name to search for in the `PATH`.\
        \ However, using this form of request in `.python-version` files is non-standard\
        \ and conflicts with `pyenv-virtualenv` which writes environment names to\
        \ `.python-version` files. In this release, uv will now ignore requests that\
        \ are arbitrary strings when found in `.python-version` files.\n-   **Error\
        \ on unknown dependency object specifiers ([12811](https://redirect.github.com/astral-sh/uv/pull/12811))**\n\
        \n    The `[dependency-groups]` entries can include \"object specifiers\"\
        , e.g. `set-phasers-to = ...` in:\n\n    ```toml\n    [dependency-groups]\n\
        \    foo = [\"pyparsing\"]\n    bar = [{set-phasers-to = \"stun\"}]\n    ```\n\
        \n    However, the only current spec-compliant object specifier is `include-group`.\
        \ Previously, uv would ignore unknown object specifiers. Now, uv will error.\n\
        -   **Make `--frozen` and `--no-sources` conflicting options ([#&#8203;12671](https://redirect.github.com/astral-sh/uv/pull/12671))**\n\
        \n    Using `--no-sources` always requires a new resolution and `--frozen`\
        \ will always fail when used with it. Now, this conflict is encoded in the\
        \ CLI options for clarity.\n-   **Treat empty `UV_PYTHON_INSTALL_DIR` and\
        \ `UV_TOOL_DIR` as unset ([#&#8203;12907](https://redirect.github.com/astral-sh/uv/pull/12907),\
        \ [#&#8203;12905](https://redirect.github.com/astral-sh/uv/pull/12905))**\n\
        \n    Previously, these variables were treated as set to the current working\
        \ directory when set to an empty string. Now, uv will ignore these variables\
        \ when empty. This matches uv's behavior for other environment variables which\
        \ configure directories.\n\n##### Enhancements\n\n-   Disallow mixing requirements\
        \ across PyTorch indexes ([#&#8203;13179](https://redirect.github.com/astral-sh/uv/pull/13179))\n\
        -   Add optional managed Python archive download cache ([#&#8203;12175](https://redirect.github.com/astral-sh/uv/pull/12175))\n\
        -   Add `poetry-core` as a `uv init` build backend option ([#&#8203;12781](https://redirect.github.com/astral-sh/uv/pull/12781))\n\
        -   Show tag hints when failing to find a compatible wheel in `pylock.toml`\
        \ ([#&#8203;13136](https://redirect.github.com/astral-sh/uv/pull/13136))\n\
        -   Report Python versions in `pyvenv.cfg` version mismatch ([#&#8203;13027](https://redirect.github.com/astral-sh/uv/pull/13027))\n\
        \n##### Bug fixes\n\n-   Avoid erroring on omitted wheel-only packages in\
        \ `pylock.toml` ([#&#8203;13132](https://redirect.github.com/astral-sh/uv/pull/13132))\n\
        -   Fix display name for `uvx --version` ([#&#8203;13109](https://redirect.github.com/astral-sh/uv/pull/13109))\n\
        -   Restore handling of authentication when encountering redirects ([#&#8203;13050](https://redirect.github.com/astral-sh/uv/pull/13050))\n\
        -   Respect build options (`--no-binary` et al) in `pylock.toml` ([#&#8203;13134](https://redirect.github.com/astral-sh/uv/pull/13134))\n\
        -   Use `upload-time` rather than `upload_time` in `uv.lock` ([#&#8203;13176](https://redirect.github.com/astral-sh/uv/pull/13176))\n\
        \n##### Documentation\n\n-   Changed `fish` completions append `>>` to overwrite\
        \ `>` ([#&#8203;13130](https://redirect.github.com/astral-sh/uv/pull/13130))\n\
        -   Add `pylock.toml` mentions where relevant ([#&#8203;13115](https://redirect.github.com/astral-sh/uv/pull/13115))\n\
        -   Add ROCm example to the PyTorch guide ([#&#8203;13200](https://redirect.github.com/astral-sh/uv/pull/13200))\n\
        -   Upgrade PyTorch guide to CUDA 12.8 and PyTorch 2.7 ([#&#8203;13199](https://redirect.github.com/astral-sh/uv/pull/13199))\n\
        \n### [`v0.6.17`](https://redirect.github.com/astral-sh/uv/releases/tag/0.6.17)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.16...0.6.17)\n\
        \n#### Release Notes\n\n##### Preview features\n\n-   Add PyTorch v2.7.0 to\
        \ GPU backend ([#&#8203;13072](https://redirect.github.com/astral-sh/uv/pull/13072))\n\
        \n##### Bug fixes\n\n-   Avoid panic for invalid Python versions ([#&#8203;13077](https://redirect.github.com/astral-sh/uv/pull/13077))\n\
        -   Block scripts from overwriting `python` ([#&#8203;13051](https://redirect.github.com/astral-sh/uv/pull/13051))\n\
        -   Check distribution names to handle invalid redirects ([#&#8203;12917](https://redirect.github.com/astral-sh/uv/pull/12917))\n\
        -   Check for mismatched package and distribution names on resolver thread\
        \ ([#&#8203;13088](https://redirect.github.com/astral-sh/uv/pull/13088))\n\
        -   Fix panic with invalid last character in PEP 508 name ([#&#8203;13105](https://redirect.github.com/astral-sh/uv/pull/13105))\n\
        -   Reject `requires-python` even if not listed on the index page ([#&#8203;13086](https://redirect.github.com/astral-sh/uv/pull/13086))\n\
        \n#### Install uv 0.6.17\n\n##### Install prebuilt binaries via shell script\n\
        \n```sh\ncurl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.17/uv-installer.sh\
        \ | sh\n```\n\n##### Install prebuilt binaries via powershell script\n\n```sh\n\
        powershell -ExecutionPolicy Bypass -c \"irm https://github.com/astral-sh/uv/releases/download/0.6.17/uv-installer.ps1\
        \ | iex\"\n```\n\n#### Download uv 0.6.17\n\n|  File  | Platform | Checksum\
        \ |\n|--------|----------|----------|\n| [uv-aarch64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-aarch64-apple-darwin.tar.gz)\
        \ | Apple Silicon macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-aarch64-apple-darwin.tar.gz.sha256)\
        \ |\n| [uv-x86\\_64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-x86\\\
        _64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-x86\\\
        _64-apple-darwin.tar.gz.sha256) |\n| [uv-aarch64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-aarch64-pc-windows-msvc.zip)\
        \ | ARM64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-aarch64-pc-windows-msvc.zip.sha256)\
        \ |\n| [uv-i686-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-i686-pc-windows-msvc.zip)\
        \ | x86 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-i686-pc-windows-msvc.zip.sha256)\
        \ |\n| [uv-x86\\_64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-x86\\\
        _64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-x86\\\
        _64-pc-windows-msvc.zip.sha256) |\n| [uv-aarch64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-aarch64-unknown-linux-gnu.tar.gz)\
        \ | ARM64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-aarch64-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-i686-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-i686-unknown-linux-gnu.tar.gz)\
        \ | x86 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-i686-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-powerpc64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-powerpc64-unknown-linux-gnu.tar.gz)\
        \ | PPC64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-powerpc64-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-powerpc64le-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-powerpc64le-unknown-linux-gnu.tar.gz)\
        \ | PPC64LE Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-powerpc64le-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-s390x-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-s390x-unknown-linux-gnu.tar.gz)\
        \ | S390x Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-s390x-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-x86\\_64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-x86\\\
        _64-unknown-linux-gnu.tar.gz) | x64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-x86\\\
        _64-unknown-linux-gnu.tar.gz.sha256) |\n| [uv-armv7-unknown-linux-gnueabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-armv7-unknown-linux-gnueabihf.tar.gz)\
        \ | ARMv7 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-armv7-unknown-linux-gnueabihf.tar.gz.sha256)\
        \ |\n| [uv-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-aarch64-unknown-linux-musl.tar.gz)\
        \ | ARM64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-aarch64-unknown-linux-musl.tar.gz.sha256)\
        \ |\n| [uv-i686-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-i686-unknown-linux-musl.tar.gz)\
        \ | x86 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-i686-unknown-linux-musl.tar.gz.sha256)\
        \ |\n| [uv-x86\\_64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-x86\\\
        _64-unknown-linux-musl.tar.gz) | x64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-x86\\\
        _64-unknown-linux-musl.tar.gz.sha256) |\n| [uv-arm-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-arm-unknown-linux-musleabihf.tar.gz)\
        \ | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-arm-unknown-linux-musleabihf.tar.gz.sha256)\
        \ |\n| [uv-armv7-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-armv7-unknown-linux-musleabihf.tar.gz)\
        \ | ARMv7 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.17/uv-armv7-unknown-linux-musleabihf.tar.gz.sha256)\
        \ |\n\n### [`v0.6.16`](https://redirect.github.com/astral-sh/uv/releases/tag/0.6.16)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.15...0.6.16)\n\
        \n#### Release Notes\n\n##### Bug fixes\n\n-   Revert \"Properly handle authentication\
        \ for 302 redirect URLs\" ([#&#8203;13041](https://redirect.github.com/astral-sh/uv/pull/13041))\n\
        \n#### Install uv 0.6.16\n\n##### Install prebuilt binaries via shell script\n\
        \n```sh\ncurl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.16/uv-installer.sh\
        \ | sh\n```\n\n##### Install prebuilt binaries via powershell script\n\n```sh\n\
        powershell -ExecutionPolicy Bypass -c \"irm https://github.com/astral-sh/uv/releases/download/0.6.16/uv-installer.ps1\
        \ | iex\"\n```\n\n#### Download uv 0.6.16\n\n|  File  | Platform | Checksum\
        \ |\n|--------|----------|----------|\n| [uv-aarch64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-aarch64-apple-darwin.tar.gz)\
        \ | Apple Silicon macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-aarch64-apple-darwin.tar.gz.sha256)\
        \ |\n| [uv-x86\\_64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-x86\\\
        _64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-x86\\\
        _64-apple-darwin.tar.gz.sha256) |\n| [uv-aarch64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-aarch64-pc-windows-msvc.zip)\
        \ | ARM64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-aarch64-pc-windows-msvc.zip.sha256)\
        \ |\n| [uv-i686-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-i686-pc-windows-msvc.zip)\
        \ | x86 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-i686-pc-windows-msvc.zip.sha256)\
        \ |\n| [uv-x86\\_64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-x86\\\
        _64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-x86\\\
        _64-pc-windows-msvc.zip.sha256) |\n| [uv-aarch64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-aarch64-unknown-linux-gnu.tar.gz)\
        \ | ARM64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-aarch64-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-i686-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-i686-unknown-linux-gnu.tar.gz)\
        \ | x86 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-i686-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-powerpc64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-powerpc64-unknown-linux-gnu.tar.gz)\
        \ | PPC64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-powerpc64-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-powerpc64le-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-powerpc64le-unknown-linux-gnu.tar.gz)\
        \ | PPC64LE Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-powerpc64le-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-s390x-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-s390x-unknown-linux-gnu.tar.gz)\
        \ | S390x Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-s390x-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-x86\\_64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-x86\\\
        _64-unknown-linux-gnu.tar.gz) | x64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-x86\\\
        _64-unknown-linux-gnu.tar.gz.sha256) |\n| [uv-armv7-unknown-linux-gnueabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-armv7-unknown-linux-gnueabihf.tar.gz)\
        \ | ARMv7 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-armv7-unknown-linux-gnueabihf.tar.gz.sha256)\
        \ |\n| [uv-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-aarch64-unknown-linux-musl.tar.gz)\
        \ | ARM64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-aarch64-unknown-linux-musl.tar.gz.sha256)\
        \ |\n| [uv-i686-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-i686-unknown-linux-musl.tar.gz)\
        \ | x86 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-i686-unknown-linux-musl.tar.gz.sha256)\
        \ |\n| [uv-x86\\_64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-x86\\\
        _64-unknown-linux-musl.tar.gz) | x64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-x86\\\
        _64-unknown-linux-musl.tar.gz.sha256) |\n| [uv-arm-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-arm-unknown-linux-musleabihf.tar.gz)\
        \ | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-arm-unknown-linux-musleabihf.tar.gz.sha256)\
        \ |\n| [uv-armv7-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-armv7-unknown-linux-musleabihf.tar.gz)\
        \ | ARMv7 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.16/uv-armv7-unknown-linux-musleabihf.tar.gz.sha256)\
        \ |\n\n### [`v0.6.15`](https://redirect.github.com/astral-sh/uv/releases/tag/0.6.15)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.14...0.6.15)\n\
        \n#### Release Notes\n\nThis release includes preliminary support for the\
        \ `pylock.toml` file format, as standardized in [PEP 751](https://peps.python.org/pep-0751/).\
        \ `pylock.toml` is an alternative resolution output format intended to replace\
        \ `requirements.txt` (e.g., in the context of `uv pip compile`, whereby a\
        \ \"locked\" `requirements.txt` file is generated from a set of input requirements).\
        \ `pylock.toml` is standardized and tool-agnostic, such that in the future,\
        \ `pylock.toml` files generated by uv could be installed by other tools, and\
        \ vice versa.\n\nAs of this release, `pylock.toml` is supported in the following\
        \ commands:\n\n-   To export a `uv.lock` to the `pylock.toml` format, run:\
        \ `uv export -o pylock.toml`\n-   To generate a `pylock.toml` file from a\
        \ set of requirements, run: `uv pip compile -o pylock.toml requirements.in`\n\
        -   To install from a `pylock.toml` file, run: `uv pip sync pylock.toml` or\
        \ `uv pip install -r pylock.toml`\n\n##### Enhancements\n\n-   Add PEP 751\
        \ support to `uv pip compile` ([#&#8203;13019](https://redirect.github.com/astral-sh/uv/pull/13019))\n\
        -   Add `uv export` support for PEP 751 ([#&#8203;12955](https://redirect.github.com/astral-sh/uv/pull/12955))\n\
        -   Accept `requirements.txt` (verbatim) as a format on the CLI ([#&#8203;12957](https://redirect.github.com/astral-sh/uv/pull/12957))\n\
        -   Add `UV_NO_EDITABLE` environment variable to set `--no-editable` on all\
        \ invocations ([#&#8203;12773](https://redirect.github.com/astral-sh/uv/pull/12773))\n\
        -   Add `pylock.toml` to `uv pip install` and `uv pip sync` ([#&#8203;12992](https://redirect.github.com/astral-sh/uv/pull/12992))\n\
        -   Add a brief sleep before sending `SIGINT` to child processes ([#&#8203;13018](https://redirect.github.com/astral-sh/uv/pull/13018))\n\
        -   Add upload time to `uv.lock` ([#&#8203;12968](https://redirect.github.com/astral-sh/uv/pull/12968))\n\
        -   Allow updating Git sources by name ([#&#8203;12897](https://redirect.github.com/astral-sh/uv/pull/12897))\n\
        -   Cache `which git` in `uv init` ([#&#8203;12893](https://redirect.github.com/astral-sh/uv/pull/12893))\n\
        -   Enable `--dry-run` with `--locked` / `--frozen` for `uv sync` ([#&#8203;12778](https://redirect.github.com/astral-sh/uv/pull/12778))\n\
        -   Infer output type in `uv export` ([#&#8203;12958](https://redirect.github.com/astral-sh/uv/pull/12958))\n\
        -   Make `uv init` resilient against broken git ([#&#8203;12895](https://redirect.github.com/astral-sh/uv/pull/12895))\n\
        -   Respect build constraints for `uv run --with` dependencies ([#&#8203;12882](https://redirect.github.com/astral-sh/uv/pull/12882))\n\
        -   Split UV_INDEX on all whitespace ([#&#8203;12820](https://redirect.github.com/astral-sh/uv/pull/12820))\n\
        -   Support build constraints in `uv tool` and PEP723 scripts. ([#&#8203;12842](https://redirect.github.com/astral-sh/uv/pull/12842))\n\
        -   Use suffix from `uvx` binary when searching for uv binary ([#&#8203;12923](https://redirect.github.com/astral-sh/uv/pull/12923))\n\
        -   Update version formatting to use cyan color ([#&#8203;12943](https://redirect.github.com/astral-sh/uv/pull/12943))\n\
        -   Add debug logs for version file search ([#&#8203;12951](https://redirect.github.com/astral-sh/uv/pull/12951))\n\
        -   Fix `SourceNotAllowed` error message during Python discovery ([#&#8203;13012](https://redirect.github.com/astral-sh/uv/pull/13012))\n\
        -   Obfuscate password in credentials debug messages ([#&#8203;12944](https://redirect.github.com/astral-sh/uv/pull/12944))\n\
        -   Obfuscate possible tokens in URL logs ([#&#8203;12969](https://redirect.github.com/astral-sh/uv/pull/12969))\n\
        -   Validate that PEP 751 entries don't include multiple sources ([#&#8203;12993](https://redirect.github.com/astral-sh/uv/pull/12993))\n\
        \n##### Preview features\n\n-   Build backend: Add reference docs and schema\
        \ ([#&#8203;12803](https://redirect.github.com/astral-sh/uv/pull/12803))\n\
        \n##### Bug fixes\n\n-   Align supported `config-settings` with example in\
        \ docs ([#&#8203;12947](https://redirect.github.com/astral-sh/uv/pull/12947))\n\
        -   Ensure virtual environment is compatible with interpreter on sync ([#&#8203;12884](https://redirect.github.com/astral-sh/uv/pull/12884))\n\
        -   Fix `PythonDownloadRequest` parsing for partial keys ([#&#8203;12925](https://redirect.github.com/astral-sh/uv/pull/12925))\n\
        -   Fix pre-release exclusive comparison operator in `uv-pep440` ([#&#8203;12836](https://redirect.github.com/astral-sh/uv/pull/12836))\n\
        -   Forward additional signals to the child process in `uv run` ([#&#8203;13017](https://redirect.github.com/astral-sh/uv/pull/13017))\n\
        -   Omit PEP 751 version for source trees ([#&#8203;13030](https://redirect.github.com/astral-sh/uv/pull/13030))\n\
        -   Patch `CC` and `CCX` entries in sysconfig for cross-compiled `aarch64`\
        \ Python distributions ([#&#8203;12239](https://redirect.github.com/astral-sh/uv/pull/12239))\n\
        -   Properly handle authentication for HTTP 302 redirect URLs ([#&#8203;12920](https://redirect.github.com/astral-sh/uv/pull/12920))\n\
        -   Set 4MB stack size for all threads, introduce `UV_STACK_SIZE` ([#&#8203;12839](https://redirect.github.com/astral-sh/uv/pull/12839))\n\
        -   Show PyPy downloads during `uv python list` ([#&#8203;12915](https://redirect.github.com/astral-sh/uv/pull/12915))\n\
        -   Add `subdirectory` to Direct URL for local directories ([#&#8203;12971](https://redirect.github.com/astral-sh/uv/pull/12971))\n\
        -   Prefer stable releases over pre-releases in `uv python install` ([#&#8203;12194](https://redirect.github.com/astral-sh/uv/pull/12194))\n\
        -   Write requested Python variant to pin file in `uv init` ([#&#8203;12870](https://redirect.github.com/astral-sh/uv/pull/12870))\n\
        \n##### Documentation\n\n-   Fix CLI reference with code block ([#&#8203;12807](https://redirect.github.com/astral-sh/uv/pull/12807))\n\
        -   Fix lockfile note ([#&#8203;12793](https://redirect.github.com/astral-sh/uv/pull/12793))\n\
        -   Fix typo in a reference ([#&#8203;12858](https://redirect.github.com/astral-sh/uv/pull/12858))\n\
        -   Improve docs for `uv python list --only-downloads` and `--only-installed`\
        \ ([#&#8203;12916](https://redirect.github.com/astral-sh/uv/pull/12916))\n\
        -   Update note on lack of musl distributions to ARM-only ([#&#8203;12825](https://redirect.github.com/astral-sh/uv/pull/12825))\n\
        -   Add section on shebangs for scripts ([#&#8203;11553](https://redirect.github.com/astral-sh/uv/pull/11553))\n\
        -   Display aliases for long and short args in the CLI reference ([#&#8203;12824](https://redirect.github.com/astral-sh/uv/pull/12824))\n\
        -   Fix highlight line in explicit index documentation ([#&#8203;12887](https://redirect.github.com/astral-sh/uv/pull/12887))\n\
        -   Add explicit source (matching PyTorch guide) ([#&#8203;12844](https://redirect.github.com/astral-sh/uv/pull/12844))\n\
        -   Fix link to issue ([#&#8203;12823](https://redirect.github.com/astral-sh/uv/pull/12823))\n\
        -   Fix grammatical error in FastAPI guide ([#&#8203;12908](https://redirect.github.com/astral-sh/uv/pull/12908))\n\
        -   Add `--locked` to `uv sync` in GitHub Actions guide ([#&#8203;12819](https://redirect.github.com/astral-sh/uv/pull/12819))\n\
        -   Improve formatting for `\"all\"` `default-groups` setting documentation\
        \ ([#&#8203;12963](https://redirect.github.com/astral-sh/uv/pull/12963))\n\
        -   Replace `--frozen` with `--locked` in Docker integration guide ([#&#8203;12818](https://redirect.github.com/astral-sh/uv/pull/12818))\n\
        \n#### Install uv 0.6.15\n\n##### Install prebuilt binaries via shell script\n\
        \n```sh\ncurl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.15/uv-installer.sh\
        \ | sh\n```\n\n##### Install prebuilt binaries via powershell script\n\n```sh\n\
        powershell -ExecutionPolicy Bypass -c \"irm https://github.com/astral-sh/uv/releases/download/0.6.15/uv-installer.ps1\
        \ | iex\"\n```\n\n#### Download uv 0.6.15\n\n|  File  | Platform | Checksum\
        \ |\n|--------|----------|----------|\n| [uv-aarch64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-aarch64-apple-darwin.tar.gz)\
        \ | Apple Silicon macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-aarch64-apple-darwin.tar.gz.sha256)\
        \ |\n| [uv-x86\\_64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-x86\\\
        _64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-x86\\\
        _64-apple-darwin.tar.gz.sha256) |\n| [uv-aarch64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-aarch64-pc-windows-msvc.zip)\
        \ | ARM64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-aarch64-pc-windows-msvc.zip.sha256)\
        \ |\n| [uv-i686-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-i686-pc-windows-msvc.zip)\
        \ | x86 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-i686-pc-windows-msvc.zip.sha256)\
        \ |\n| [uv-x86\\_64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-x86\\\
        _64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-x86\\\
        _64-pc-windows-msvc.zip.sha256) |\n| [uv-aarch64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-aarch64-unknown-linux-gnu.tar.gz)\
        \ | ARM64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-aarch64-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-i686-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-i686-unknown-linux-gnu.tar.gz)\
        \ | x86 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-i686-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-powerpc64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-powerpc64-unknown-linux-gnu.tar.gz)\
        \ | PPC64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-powerpc64-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-powerpc64le-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-powerpc64le-unknown-linux-gnu.tar.gz)\
        \ | PPC64LE Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-powerpc64le-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-s390x-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-s390x-unknown-linux-gnu.tar.gz)\
        \ | S390x Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-s390x-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-x86\\_64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-x86\\\
        _64-unknown-linux-gnu.tar.gz) | x64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-x86\\\
        _64-unknown-linux-gnu.tar.gz.sha256) |\n| [uv-armv7-unknown-linux-gnueabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-armv7-unknown-linux-gnueabihf.tar.gz)\
        \ | ARMv7 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-armv7-unknown-linux-gnueabihf.tar.gz.sha256)\
        \ |\n| [uv-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-aarch64-unknown-linux-musl.tar.gz)\
        \ | ARM64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-aarch64-unknown-linux-musl.tar.gz.sha256)\
        \ |\n| [uv-i686-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-i686-unknown-linux-musl.tar.gz)\
        \ | x86 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-i686-unknown-linux-musl.tar.gz.sha256)\
        \ |\n| [uv-x86\\_64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-x86\\\
        _64-unknown-linux-musl.tar.gz) | x64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-x86\\\
        _64-unknown-linux-musl.tar.gz.sha256) |\n| [uv-arm-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-arm-unknown-linux-musleabihf.tar.gz)\
        \ | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-arm-unknown-linux-musleabihf.tar.gz.sha256)\
        \ |\n| [uv-armv7-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-armv7-unknown-linux-musleabihf.tar.gz)\
        \ | ARMv7 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.15/uv-armv7-unknown-linux-musleabihf.tar.gz.sha256)\
        \ |\n\n### [`v0.6.14`](https://redirect.github.com/astral-sh/uv/releases/tag/0.6.14)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.13...0.6.14)\n\
        \n#### Release Notes\n\n##### Python versions\n\nThe following Python versions\
        \ have been added:\n\n-   CPython 3.13.3\n-   CPython 3.12.10\n-   CPython\
        \ 3.11.12\n-   CPython 3.10.17\n-   CPython 3.9.22\n\nSee the [`python-build-standalone`\
        \ release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250409)\
        \ for more details.\n\n##### Enhancements\n\n-   Add `uv-build` and `uv_build`\
        \ aliases to `uv init --build-backend` ([#&#8203;12776](https://redirect.github.com/astral-sh/uv/pull/12776))\n\
        -   Emit dedicated error message for Conda `environment.yml` files ([#&#8203;12669](https://redirect.github.com/astral-sh/uv/pull/12669))\n\
        \n##### Preview features\n\n-   Build backend: Check module dir exists for\
        \ sdist build ([#&#8203;12779](https://redirect.github.com/astral-sh/uv/pull/12779))\n\
        -   Build backend: Fix sdist with long directories ([#&#8203;12764](https://redirect.github.com/astral-sh/uv/pull/12764))\n\
        \n##### Performance\n\n-   Avoid querying GitHub on repeated install invocations\
        \ ([#&#8203;12767](https://redirect.github.com/astral-sh/uv/pull/12767))\n\
        \n##### Bug fixes\n\n-   Error when `tool.uv.sources` is set in system-level\
        \ configuration file ([#&#8203;12757](https://redirect.github.com/astral-sh/uv/pull/12757))\n\
        -   Split workspace members onto their own lines in `uv init` ([#&#8203;12756](https://redirect.github.com/astral-sh/uv/pull/12756))\n\
        \n##### Documentation\n\n-   Add lockfile note about PEP 751 ([#&#8203;12732](https://redirect.github.com/astral-sh/uv/pull/12732))\n\
        -   Extend the reference documentation for `uv pip sync` ([#&#8203;12683](https://redirect.github.com/astral-sh/uv/pull/12683))\n\
        -   Fix mismatched pip interface header / nav titles ([#&#8203;12640](https://redirect.github.com/astral-sh/uv/pull/12640))\n\
        \n### uv 0.6.14\n\n#### Install uv 0.6.14\n\n##### Install prebuilt binaries\
        \ via shell script\n\n```sh\ncurl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.14/uv-installer.sh\
        \ | sh\n```\n\n##### Install prebuilt binaries via powershell script\n\n```sh\n\
        powershell -ExecutionPolicy Bypass -c \"irm https://github.com/astral-sh/uv/releases/download/0.6.14/uv-installer.ps1\
        \ | iex\"\n```\n\n#### Download uv 0.6.14\n\n|  File  | Platform | Checksum\
        \ |\n|--------|----------|----------|\n| [uv-aarch64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-aarch64-apple-darwin.tar.gz)\
        \ | Apple Silicon macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-aarch64-apple-darwin.tar.gz.sha256)\
        \ |\n| [uv-x86\\_64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-x86\\\
        _64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-x86\\\
        _64-apple-darwin.tar.gz.sha256) |\n| [uv-aarch64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-aarch64-pc-windows-msvc.zip)\
        \ | ARM64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-aarch64-pc-windows-msvc.zip.sha256)\
        \ |\n| [uv-i686-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-i686-pc-windows-msvc.zip)\
        \ | x86 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-i686-pc-windows-msvc.zip.sha256)\
        \ |\n| [uv-x86\\_64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-x86\\\
        _64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-x86\\\
        _64-pc-windows-msvc.zip.sha256) |\n| [uv-aarch64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-aarch64-unknown-linux-gnu.tar.gz)\
        \ | ARM64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-aarch64-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-i686-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-i686-unknown-linux-gnu.tar.gz)\
        \ | x86 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-i686-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-powerpc64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-powerpc64-unknown-linux-gnu.tar.gz)\
        \ | PPC64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-powerpc64-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-powerpc64le-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-powerpc64le-unknown-linux-gnu.tar.gz)\
        \ | PPC64LE Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-powerpc64le-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-s390x-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-s390x-unknown-linux-gnu.tar.gz)\
        \ | S390x Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-s390x-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-x86\\_64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-x86\\\
        _64-unknown-linux-gnu.tar.gz) | x64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-x86\\\
        _64-unknown-linux-gnu.tar.gz.sha256) |\n| [uv-armv7-unknown-linux-gnueabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-armv7-unknown-linux-gnueabihf.tar.gz)\
        \ | ARMv7 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-armv7-unknown-linux-gnueabihf.tar.gz.sha256)\
        \ |\n| [uv-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-aarch64-unknown-linux-musl.tar.gz)\
        \ | ARM64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-aarch64-unknown-linux-musl.tar.gz.sha256)\
        \ |\n| [uv-i686-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-i686-unknown-linux-musl.tar.gz)\
        \ | x86 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-i686-unknown-linux-musl.tar.gz.sha256)\
        \ |\n| [uv-x86\\_64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-x86\\\
        _64-unknown-linux-musl.tar.gz) | x64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-x86\\\
        _64-unknown-linux-musl.tar.gz.sha256) |\n| [uv-arm-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-arm-unknown-linux-musleabihf.tar.gz)\
        \ | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-arm-unknown-linux-musleabihf.tar.gz.sha256)\
        \ |\n| [uv-armv7-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-armv7-unknown-linux-musleabihf.tar.gz)\
        \ | ARMv7 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.14/uv-armv7-unknown-linux-musleabihf.tar.gz.sha256)\
        \ |\n\n### [`v0.6.13`](https://redirect.github.com/astral-sh/uv/releases/tag/0.6.13)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.12...0.6.13)\n\
        \n#### Release Notes\n\n##### Enhancements\n\n-   Add `--show-version` to\
        \ `uv python find` ([#&#8203;12376](https://redirect.github.com/astral-sh/uv/pull/12376))\n\
        -   Remove `--no-config` warning from `uv pip compile` and `uv pip sync` ([#&#8203;12642](https://redirect.github.com/astral-sh/uv/pull/12642))\n\
        -   Skip repeated directories in `PATH` when searching for Python interpreters\
        \ ([#&#8203;12367](https://redirect.github.com/astral-sh/uv/pull/12367))\n\
        -   Unset `SCRIPT_PATH` in relocatable activation script ([#&#8203;12672](https://redirect.github.com/astral-sh/uv/pull/12672))\n\
        -   Add `UV_PYTHON_DOWNLOADS_JSON_URL` to set custom managed python sources\
        \ ([#&#8203;10939](https://redirect.github.com/astral-sh/uv/pull/10939))\n\
        -   Reject `pyproject.toml` files in `uv pip compile -o` ([#&#8203;12673](https://redirect.github.com/astral-sh/uv/pull/12673))\n\
        -   Respect the `--offline` flag for Git operations ([#&#8203;12619](https://redirect.github.com/astral-sh/uv/pull/12619))\n\
        \n##### Bug fixes\n\n-   Warn instead of error if CRC appears to be missing\
        \ ([#&#8203;12722](https://redirect.github.com/astral-sh/uv/pull/12722))\n\
        -   Avoid infinite loop in `uv export` with conflicts ([#&#8203;12726](https://redirect.github.com/astral-sh/uv/pull/12726))\n\
        \n##### Rust API\n\n-   Update MSRV to 1.84 ([#&#8203;12670](https://redirect.github.com/astral-sh/uv/pull/12670))\n\
        \n### uv 0.6.13\n\n#### Install uv 0.6.13\n\n##### Install prebuilt binaries\
        \ via shell script\n\n```sh\ncurl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.13/uv-installer.sh\
        \ | sh\n```\n\n##### Install prebuilt binaries via powershell script\n\n```sh\n\
        powershell -ExecutionPolicy Bypass -c \"irm https://github.com/astral-sh/uv/releases/download/0.6.13/uv-installer.ps1\
        \ | iex\"\n```\n\n#### Download uv 0.6.13\n\n|  File  | Platform | Checksum\
        \ |\n|--------|----------|----------|\n| [uv-aarch64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-aarch64-apple-darwin.tar.gz)\
        \ | Apple Silicon macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-aarch64-apple-darwin.tar.gz.sha256)\
        \ |\n| [uv-x86\\_64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-x86\\\
        _64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-x86\\\
        _64-apple-darwin.tar.gz.sha256) |\n| [uv-aarch64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-aarch64-pc-windows-msvc.zip)\
        \ | ARM64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-aarch64-pc-windows-msvc.zip.sha256)\
        \ |\n| [uv-i686-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-i686-pc-windows-msvc.zip)\
        \ | x86 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-i686-pc-windows-msvc.zip.sha256)\
        \ |\n| [uv-x86\\_64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-x86\\\
        _64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-x86\\\
        _64-pc-windows-msvc.zip.sha256) |\n| [uv-aarch64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-aarch64-unknown-linux-gnu.tar.gz)\
        \ | ARM64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-aarch64-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-i686-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-i686-unknown-linux-gnu.tar.gz)\
        \ | x86 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-i686-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-powerpc64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-powerpc64-unknown-linux-gnu.tar.gz)\
        \ | PPC64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-powerpc64-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-powerpc64le-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-powerpc64le-unknown-linux-gnu.tar.gz)\
        \ | PPC64LE Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-powerpc64le-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-s390x-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-s390x-unknown-linux-gnu.tar.gz)\
        \ | S390x Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-s390x-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-x86\\_64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-x86\\\
        _64-unknown-linux-gnu.tar.gz) | x64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-x86\\\
        _64-unknown-linux-gnu.tar.gz.sha256) |\n| [uv-armv7-unknown-linux-gnueabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-armv7-unknown-linux-gnueabihf.tar.gz)\
        \ | ARMv7 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-armv7-unknown-linux-gnueabihf.tar.gz.sha256)\
        \ |\n| [uv-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-aarch64-unknown-linux-musl.tar.gz)\
        \ | ARM64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-aarch64-unknown-linux-musl.tar.gz.sha256)\
        \ |\n| [uv-i686-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-i686-unknown-linux-musl.tar.gz)\
        \ | x86 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-i686-unknown-linux-musl.tar.gz.sha256)\
        \ |\n| [uv-x86\\_64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-x86\\\
        _64-unknown-linux-musl.tar.gz) | x64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-x86\\\
        _64-unknown-linux-musl.tar.gz.sha256) |\n| [uv-arm-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-arm-unknown-linux-musleabihf.tar.gz)\
        \ | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-arm-unknown-linux-musleabihf.tar.gz.sha256)\
        \ |\n| [uv-armv7-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-armv7-unknown-linux-musleabihf.tar.gz)\
        \ | ARMv7 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.13/uv-armv7-unknown-linux-musleabihf.tar.gz.sha256)\
        \ |\n\n### [`v0.6.12`](https://redirect.github.com/astral-sh/uv/releases/tag/0.6.12)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.11...0.6.12)\n\
        \n#### Release Notes\n\n##### Enhancements\n\n-   Report the queried executable\
        \ path in `uv python list` ([#&#8203;12628](https://redirect.github.com/astral-sh/uv/pull/12628))\n\
        -   Improve archive unpack error messages ([#&#8203;12627](https://redirect.github.com/astral-sh/uv/pull/12627))\n\
        \n##### Bug fixes\n\n-   Respect `authenticate` when using `explicit = true`\
        \ ([#&#8203;12631](https://redirect.github.com/astral-sh/uv/pull/12631))\n\
        -   Normalize extra and group names in `uv add` and `uv remove` ([#&#8203;12586](https://redirect.github.com/astral-sh/uv/pull/12586))\n\
        -   Enforce CRC-32 checks when unpacking archives ([#&#8203;12623](https://redirect.github.com/astral-sh/uv/pull/12623))\n\
        -   Fix parsing of `python-platform` in settings files ([#&#8203;12592](https://redirect.github.com/astral-sh/uv/pull/12592))\n\
        \n##### Documentation\n\n-   Add note about `uv build` to `package = false`\
        \ ([#&#8203;12608](https://redirect.github.com/astral-sh/uv/pull/12608))\n\
        -   Add index fallback note to `authenticate = always` documentation ([#&#8203;12498](https://redirect.github.com/astral-sh/uv/pull/12498))\n\
        -   Fix invalid 'kind' reference in flat index docs ([#&#8203;12583](https://redirect.github.com/astral-sh/uv/pull/12583))\n\
        \n### uv 0.6.12\n\n#### Install uv 0.6.12\n\n##### Install prebuilt binaries\
        \ via shell script\n\n```sh\ncurl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.12/uv-installer.sh\
        \ | sh\n```\n\n##### Install prebuilt binaries via powershell script\n\n```sh\n\
        powershell -ExecutionPolicy Bypass -c \"irm https://github.com/astral-sh/uv/releases/download/0.6.12/uv-installer.ps1\
        \ | iex\"\n```\n\n#### Download uv 0.6.12\n\n|  File  | Platform | Checksum\
        \ |\n|--------|----------|----------|\n| [uv-aarch64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-aarch64-apple-darwin.tar.gz)\
        \ | Apple Silicon macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-aarch64-apple-darwin.tar.gz.sha256)\
        \ |\n| [uv-x86\\_64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-x86\\\
        _64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-x86\\\
        _64-apple-darwin.tar.gz.sha256) |\n| [uv-aarch64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-aarch64-pc-windows-msvc.zip)\
        \ | ARM64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-aarch64-pc-windows-msvc.zip.sha256)\
        \ |\n| [uv-i686-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-i686-pc-windows-msvc.zip)\
        \ | x86 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-i686-pc-windows-msvc.zip.sha256)\
        \ |\n| [uv-x86\\_64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-x86\\\
        _64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-x86\\\
        _64-pc-windows-msvc.zip.sha256) |\n| [uv-aarch64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-aarch64-unknown-linux-gnu.tar.gz)\
        \ | ARM64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-aarch64-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-i686-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-i686-unknown-linux-gnu.tar.gz)\
        \ | x86 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-i686-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-powerpc64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-powerpc64-unknown-linux-gnu.tar.gz)\
        \ | PPC64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-powerpc64-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-powerpc64le-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-powerpc64le-unknown-linux-gnu.tar.gz)\
        \ | PPC64LE Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-powerpc64le-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-s390x-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-s390x-unknown-linux-gnu.tar.gz)\
        \ | S390x Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-s390x-unknown-linux-gnu.tar.gz.sha256)\
        \ |\n| [uv-x86\\_64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-x86\\\
        _64-unknown-linux-gnu.tar.gz) | x64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-x86\\\
        _64-unknown-linux-gnu.tar.gz.sha256) |\n| [uv-armv7-unknown-linux-gnueabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-armv7-unknown-linux-gnueabihf.tar.gz)\
        \ | ARMv7 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-armv7-unknown-linux-gnueabihf.tar.gz.sha256)\
        \ |\n| [uv-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-aarch64-unknown-linux-musl.tar.gz)\
        \ | ARM64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.6.12/uv-aarch64-unknown-linux-musl.tar.gz.sha256)\
        \ |\n| [uv-i686-u\n\n</details>\n\n---\n\n### Configuration\n\n\U0001F4C5\
        \ **Schedule**: Branch creation - At any time (no schedule defined), Automerge\
        \ - At any time (no schedule defined).\n\n\U0001F6A6 **Automerge**: Disabled\
        \ by config. Please merge this manually once you are satisfied.\n\n\u267B\
        \ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry\
        \ checkbox.\n\n\U0001F47B **Immortal**: This PR will be recreated if closed\
        \ unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions)\
        \ if that's undesired.\n\n---\n\n - [ ] <!-- rebase-check -->If you want to\
        \ rebase/retry this PR, check this box\n\n---\n\nThis PR was generated by\
        \ [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/osism/container-images).\n\
        <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjI2NC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
      change_url: https://github.com/osism/container-images/pull/709
      child_jobs: []
      commit_id: af26b9719ed2c11ecdf8f53379f91cc3c4d880c1
      event_id: cf89b350-293c-11f0-8389-c4d259a455fc
      executor:
        hostname: 7d211f194f6a
        inventory_file: /var/lib/zuul/builds/0c5daefbee664201920a25bacd3fa2e9/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/0c5daefbee664201920a25bacd3fa2e9/work/logs
        result_data_file: /var/lib/zuul/builds/0c5daefbee664201920a25bacd3fa2e9/work/results.json
        src_root: /var/lib/zuul/builds/0c5daefbee664201920a25bacd3fa2e9/work/src
        work_root: /var/lib/zuul/builds/0c5daefbee664201920a25bacd3fa2e9/work
      items:
      - branch: main
        change: '709'
        change_url: https://github.com/osism/container-images/pull/709
        patchset: af26b9719ed2c11ecdf8f53379f91cc3c4d880c1
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-images
          name: osism/container-images
          short_name: container-images
          src_dir: src/github.com/osism/container-images
      job: yamllint
      jobtags: []
      max_attempts: 3
      message: Y2hvcmUoZGVwcyk6IHVwZGF0ZSBuZXRib3gKClRoaXMgUFIgY29udGFpbnMgdGhlIGZvbGxvd2luZyB1cGRhdGVzOgoKfCBQYWNrYWdlIHwgVHlwZSB8IFVwZGF0ZSB8IENoYW5nZSB8IEFnZSB8IEFkb3B0aW9uIHwgUGFzc2luZyB8IENvbmZpZGVuY2UgfAp8LS0tfC0tLXwtLS18LS0tfC0tLXwtLS18LS0tfC0tLXwKfCBbZ2hjci5pby9hc3RyYWwtc2gvdXZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYpIHwgZmluYWwgfCBtaW5vciB8IGAwLjYuMTFgIC0+IGAwLjcuMmAgfCBbIVthZ2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9hZ2UvZG9ja2VyL2doY3IuaW8lMmZhc3RyYWwtc2glMmZ1di8wLjcuMj9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW2Fkb3B0aW9uXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvYWRvcHRpb24vZG9ja2VyL2doY3IuaW8lMmZhc3RyYWwtc2glMmZ1di8wLjcuMj9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW3Bhc3NpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb21wYXRpYmlsaXR5L2RvY2tlci9naGNyLmlvJTJmYXN0cmFsLXNoJTJmdXYvMC42LjExLzAuNy4yP3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwgWyFbY29uZmlkZW5jZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2NvbmZpZGVuY2UvZG9ja2VyL2doY3IuaW8lMmZhc3RyYWwtc2glMmZ1di8wLjYuMTEvMC43LjI/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfAp8IFtuZXRib3gtcGx1Z2luLWRuc10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucykgfCAgfCBtaW5vciB8IGA9PTEuMi42YCAtPiBgPT0xLjMuMGAgfCBbIVthZ2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9hZ2UvcHlwaS9uZXRib3gtcGx1Z2luLWRucy8xLjMuMD9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW2Fkb3B0aW9uXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvYWRvcHRpb24vcHlwaS9uZXRib3gtcGx1Z2luLWRucy8xLjMuMD9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW3Bhc3NpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb21wYXRpYmlsaXR5L3B5cGkvbmV0Ym94LXBsdWdpbi1kbnMvMS4yLjYvMS4zLjA/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbIVtjb25maWRlbmNlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvY29uZmlkZW5jZS9weXBpL25ldGJveC1wbHVnaW4tZG5zLzEuMi42LzEuMy4wP3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwKfCBbbmV0Ym94LXNlY3JldHNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9PbmVtaW5kLVNlcnZpY2VzLUxMQy9uZXRib3gtc2VjcmV0cykgfCAgfCBwYXRjaCB8IGA9PTIuMi4wYCAtPiBgPT0yLjIuMWAgfCBbIVthZ2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9hZ2UvcHlwaS9uZXRib3gtc2VjcmV0cy8yLjIuMT9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW2Fkb3B0aW9uXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvYWRvcHRpb24vcHlwaS9uZXRib3gtc2VjcmV0cy8yLjIuMT9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW3Bhc3NpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb21wYXRpYmlsaXR5L3B5cGkvbmV0Ym94LXNlY3JldHMvMi4yLjAvMi4yLjE/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbIVtjb25maWRlbmNlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvY29uZmlkZW5jZS9weXBpL25ldGJveC1zZWNyZXRzLzIuMi4wLzIuMi4xP3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwKfCBbcXVheS5pby9uZXRib3hjb21tdW5pdHkvbmV0Ym94XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbmV0Ym94LWNvbW11bml0eS9uZXRib3gtZG9ja2VyKSB8ICB8IG1pbm9yIHwgYHY0LjIuMmAgLT4gYHY0LjMuMGAgfCBbIVthZ2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9hZ2UvZG9ja2VyL3F1YXkuaW8lMmZuZXRib3hjb21tdW5pdHklMmZuZXRib3gvdjQuMy4wP3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwgWyFbYWRvcHRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9hZG9wdGlvbi9kb2NrZXIvcXVheS5pbyUyZm5ldGJveGNvbW11bml0eSUyZm5ldGJveC92NC4zLjA/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbIVtwYXNzaW5nXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvY29tcGF0aWJpbGl0eS9kb2NrZXIvcXVheS5pbyUyZm5ldGJveGNvbW11bml0eSUyZm5ldGJveC92NC4yLjIvdjQuMy4wP3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwgWyFbY29uZmlkZW5jZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2NvbmZpZGVuY2UvZG9ja2VyL3F1YXkuaW8lMmZuZXRib3hjb21tdW5pdHklMmZuZXRib3gvdjQuMi4yL3Y0LjMuMD9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8CnwgW3F1YXkuaW8vbmV0Ym94Y29tbXVuaXR5L25ldGJveF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL25ldGJveC1jb21tdW5pdHkvbmV0Ym94LWRvY2tlcikgfCBzdGFnZSB8IG1pbm9yIHwgYHY0LjIuMmAgLT4gYHY0LjMuMGAgfCBbIVthZ2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9hZ2UvZG9ja2VyL3F1YXkuaW8lMmZuZXRib3hjb21tdW5pdHklMmZuZXRib3gvdjQuMy4wP3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwgWyFbYWRvcHRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9hZG9wdGlvbi9kb2NrZXIvcXVheS5pbyUyZm5ldGJveGNvbW11bml0eSUyZm5ldGJveC92NC4zLjA/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbIVtwYXNzaW5nXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvY29tcGF0aWJpbGl0eS9kb2NrZXIvcXVheS5pbyUyZm5ldGJveGNvbW11bml0eSUyZm5ldGJveC92NC4yLjIvdjQuMy4wP3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwgWyFbY29uZmlkZW5jZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2NvbmZpZGVuY2UvZG9ja2VyL3F1YXkuaW8lMmZuZXRib3hjb21tdW5pdHklMmZuZXRib3gvdjQuMi4yL3Y0LjMuMD9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8CgotLS0KCiMjIyBSZWxlYXNlIE5vdGVzCgo8ZGV0YWlscz4KPHN1bW1hcnk+YXN0cmFsLXNoL3V2IChnaGNyLmlvL2FzdHJhbC1zaC91dik8L3N1bW1hcnk+CgojIyMgW2B2MC43LjJgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2Jsb2IvSEVBRC9DSEFOR0VMT0cubWQjMDcyKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2NvbXBhcmUvMC43LjEuLi4wLjcuMikKCiMjIyMjIEVuaGFuY2VtZW50cwoKLSAgIEltcHJvdmUgdHJhY2UgbG9nIGZvciByZXRyeWFibGUgZXJyb3JzIChbIyYjODIwMzsxMzIyOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzMjI4KSkKLSAgIFVzZSAiZXJyb3IiIGluc3RlYWQgb2YgIndhcm5pbmciIGZvciBzZWxmLXVwZGF0ZSBtZXNzYWdlIChbIyYjODIwMzsxMzIyOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzMjI5KSkKLSAgIEVycm9yIHdoZW4gYHV2IHZlcnNpb25gIGlzIHVzZWQgd2l0aCBwcm9qZWN0LXNwZWNpZmljIGZsYWdzIGJ1dCBubyBwcm9qZWN0IGlzIGZvdW5kIChbIyYjODIwMzsxMzIwM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzMjAzKSkKCiMjIyMjIEJ1ZyBmaXhlcwoKLSAgIEZpeCBpbmNvcnJlY3QgdmlydHVhbCBlbnZpcm9ubWVudCBpbnZhbGlkYXRpb24gZm9yIHByZS1yZWxlYXNlIFB5dGhvbiB2ZXJzaW9ucyAoWyMmIzgyMDM7MTMyMzRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMzIzNCkpCi0gICBGaXggcGF0Y2hpbmcgb2YgYGNsYW5nYCBpbiBtYW5hZ2VkIFB5dGhvbiBzeXNjb25maWcgKFsjJiM4MjAzOzEzMjM3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMyMzcpKQotICAgUmVzcGVjdCBgLS1wcm9qZWN0YCBpbiBgdXYgdmVyc2lvbmAgKFsjJiM4MjAzOzEzMjMwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMyMzApKQoKIyMjIFtgdjAuNy4xYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9ibG9iL0hFQUQvQ0hBTkdFTE9HLm1kIzA3MSkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9jb21wYXJlLzAuNy4wLi4uMC43LjEpCgojIyMjIyBFbmhhbmNlbWVudAoKLSAgIEFkZCBzdXBwb3J0IGZvciBCTEFLRTJiLTI1NiAoWyMmIzgyMDM7MTMyMDRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMzIwNCkpCgojIyMjIyBCdWdmaXgKCi0gICBSZXZlcnQgZml4IGhhbmRsaW5nIG9mIGF1dGhlbnRpY2F0aW9uIHdoZW4gZW5jb3VudGVyaW5nIHJlZGlyZWN0cyAoWyMmIzgyMDM7MTMyMTVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMzIxNSkpCgojIyMgW2B2MC43LjBgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2Jsb2IvSEVBRC9DSEFOR0VMT0cubWQjMDcwKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2NvbXBhcmUvMC42LjE3Li4uMC43LjApCgpUaGlzIHJlbGVhc2UgY29udGFpbnMgdmFyaW91cyBjaGFuZ2VzIHRoYXQgaW1wcm92ZSBjb3JyZWN0bmVzcyBhbmQgdXNlciBleHBlcmllbmNlLCBidXQgY291bGQgYnJlYWsgc29tZSB3b3JrZmxvd3M7IG1hbnkgY2hhbmdlcyBoYXZlIGJlZW4gbWFya2VkIGFzIGJyZWFraW5nIG91dCBvZiBhbiBhYnVuZGFuY2Ugb2YgY2F1dGlvbi4gV2UgZXhwZWN0IG1vc3QgdXNlcnMgdG8gYmUgYWJsZSB0byB1cGdyYWRlIHdpdGhvdXQgbWFraW5nIGNoYW5nZXMuCgojIyMjIyBCcmVha2luZyBjaGFuZ2VzCgotICAgKipVcGRhdGUgYHV2IHZlcnNpb25gIHRvIGRpc3BsYXkgYW5kIHVwZGF0ZSBwcm9qZWN0IHZlcnNpb25zIChbIyYjODIwMzsxMjM0OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyMzQ5KSkqKgoKICAgIFByZXZpb3VzbHksIGB1diB2ZXJzaW9uYCBkaXNwbGF5ZWQgdXYncyB2ZXJzaW9uLiBOb3csIGB1diB2ZXJzaW9uYCB3aWxsIGRpc3BsYXkgb3IgdXBkYXRlIHRoZSBwcm9qZWN0J3MgdmVyc2lvbi4gVGhpcyBpbnRlcmZhY2Ugd2FzIFtoZWF2aWx5IHJlcXVlc3RlZF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9pc3N1ZXMvNjI5OCkgYW5kLCBhZnRlciBtdWNoIGNvbnNpZGVyYXRpb24sIHdlIGRlY2lkZWQgdGhhdCB0cmFuc2l0aW9uaW5nIHRoZSB0b3AtbGV2ZWwgY29tbWFuZCB3YXMgdGhlIGJlc3Qgb3B0aW9uLgoKICAgIEhlcmUncyBhIGJyaWVmIGV4YW1wbGU6CgogICAgYGBgY29uc29sZQogICAgJCB1diBpbml0IGV4YW1wbGUKICAgIEluaXRpYWxpemVkIHByb2plY3QgYGV4YW1wbGVgIGF0IGAuL2V4YW1wbGVgCiAgICAkIGNkIGV4YW1wbGUKICAgICQgdXYgdmVyc2lvbgogICAgZXhhbXBsZSAwLjEuMAogICAgJCB1diB2ZXJzaW9uIC0tYnVtcCBtYWpvcgogICAgZXhhbXBsZSAwLjEuMCA9PiAxLjAuMAogICAgJCB1diB2ZXJzaW9uIC0tc2hvcnQKICAgIDEuMC4wCiAgICBgYGAKCiAgICBJZiB1c2VkIG91dHNpZGUgb2YgYSBwcm9qZWN0LCB1diB3aWxsIGZhbGxiYWNrIHRvIHNob3dpbmcgaXRzIG93biB2ZXJzaW9uIHN0aWxsOgoKICAgIGBgYGNvbnNvbGUKICAgICQgdXYgdmVyc2lvbgogICAgd2FybmluZzogZmFpbGVkIHRvIHJlYWQgcHJvamVjdDogTm8gYHB5cHJvamVjdC50b21sYCBmb3VuZCBpbiBjdXJyZW50IGRpcmVjdG9yeSBvciBhbnkgcGFyZW50IGRpcmVjdG9yeQogICAgICBydW5uaW5nIGB1diBzZWxmIHZlcnNpb25gIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGB1diB2ZXJzaW9uYCBjb21tYW5kLgogICAgICB0aGlzIGZhbGxiYWNrIHdpbGwgYmUgcmVtb3ZlZCBzb29uLCBwYXNzIGAtLXByZXZpZXdgIHRvIG1ha2UgdGhpcyBhbiBlcnJvci4KCiAgICB1diAwLjcuMCAoNDQzM2Y0MWM5IDIwMjUtMDQtMjkpCiAgICBgYGAKCiAgICBBcyBkZXNjcmliZWQgaW4gdGhlIHdhcm5pbmcsIGAtLXByZXZpZXdgIGNhbiBiZSB1c2VkIHRvIGVycm9yIGluc3RlYWQ6CgogICAgYGBgY29uc29sZQogICAgJCB1diB2ZXJzaW9uIC0tcHJldmlldwogICAgZXJyb3I6IE5vIGBweXByb2plY3QudG9tbGAgZm91bmQgaW4gY3VycmVudCBkaXJlY3Rvcnkgb3IgYW55IHBhcmVudCBkaXJlY3RvcnkKICAgIGBgYAoKICAgIFRoZSBwcmV2aW91cyBmdW5jdGlvbmFsaXR5IG9mIGB1diB2ZXJzaW9uYCB3YXMgbW92ZWQgdG8gYHV2IHNlbGYgdmVyc2lvbmAuCi0gICAqKkF2b2lkIGZhbGxiYWNrIHRvIHN1YnNlcXVlbnQgaW5kZXhlcyBvbiBhdXRoZW50aWNhdGlvbiBmYWlsdXJlIChbIyYjODIwMzsxMjgwNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyODA1KSkqKgoKICAgIFdoZW4gdXNpbmcgdGhlIGBmaXJzdC1pbmRleGAgc3RyYXRlZ3kgKHRoZSBkZWZhdWx0KSwgdXYgd2lsbCBzdG9wIHNlYXJjaGluZyBpbmRleGVzIGZvciBhIHBhY2thZ2Ugb25jZSBpdCBpcyBmb3VuZCBvbiBhIHNpbmdsZSBpbmRleC4gUHJldmlvdXNseSwgdXYgY29uc2lkZXJlZCBhIHBhY2thZ2UgYXMgIm1pc3NpbmciIGZyb20gYW4gaW5kZXggZHVyaW5nIGF1dGhlbnRpY2F0aW9uIGZhaWx1cmVzLCBzdWNoIGFzIGFuIEhUVFAgNDAxIG9yIEhUVFAgNDAzIChub3JtYWxseSwgbWlzc2luZyBwYWNrYWdlcyBhcmUgcmVwcmVzZW50ZWQgYnkgYW4gSFRUUCA0MDQpLiBUaGlzIGJlaGF2aW9yIHdhcyBtb3RpdmF0ZWQgYnkgdW51c3VhbCByZXNwb25zZXMgZnJvbSBzb21lIHBhY2thZ2UgaW5kZXhlcywgYnV0IHJlZHVjZXMgdGhlIHNhZmV0eSBvZiB1didzIGluZGV4IHN0cmF0ZWd5IHdoZW4gYXV0aGVudGljYXRpb24gZmFpbHMuIE5vdywgdXYgd2lsbCBjb25zaWRlciBhbiBhdXRoZW50aWNhdGlvbiBmYWlsdXJlIGFzIGEgc3RvcC1wb2ludCB3aGVuIHNlYXJjaGluZyBmb3IgYSBwYWNrYWdlIGFjcm9zcyBpbmRleGVzLiBUaGUgYGluZGV4Lmlnbm9yZS1lcnJvci1jb2Rlc2Agb3B0aW9uIGNhbiBiZSB1c2VkIHRvIHJlY292ZXIgdGhlIGV4aXN0aW5nIGJlaGF2aW9yLCBlLmcuOgoKICAgIGBgYHRvbWwKICAgIFtbdG9vbC51di5pbmRleF1dCiAgICBuYW1lID0gInB5dG9yY2giCiAgICB1cmwgPSAiaHR0cHM6Ly9kb3dubG9hZC5weXRvcmNoLm9yZy93aGwvY3B1IgogICAgaWdub3JlLWVycm9yLWNvZGVzID0gWzQwMSwgNDAzXQogICAgYGBgCgogICAgU2luY2UgUHlUb3JjaCdzIGluZGV4ZXMgYWx3YXlzIHJldHVybiBhIEhUVFAgNDAzIGZvciBtaXNzaW5nIHBhY2thZ2VzLCB1diBzcGVjaWFsLWNhc2VzIGluZGV4ZXMgb24gdGhlIGBweXRvcmNoLm9yZ2AgZG9tYWluIHRvIGlnbm9yZSB0aGF0IGVycm9yIGNvZGUgYnkgZGVmYXVsdC4KLSAgICoqUmVxdWlyZSB0aGUgY29tbWFuZCBpbiBgdXZ4IDxuYW1lPmAgdG8gYmUgYXZhaWxhYmxlIGluIHRoZSBQeXRob24gZW52aXJvbm1lbnQgKFsjJiM4MjAzOzExNjAzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTE2MDMpKSoqCgogICAgUHJldmlvdXNseSwgYHV2eGAgd291bGQgYXR0ZW1wdCB0byBleGVjdXRlIGEgY29tbWFuZCBldmVuIGlmIGl0IHdhcyBub3QgcHJvdmlkZWQgYnkgYSBQeXRob24gcGFja2FnZS4gRm9yIGV4YW1wbGUsIGlmIHdlIHByZXN1bWUgYGZvb2AgaXMgYW4gZW1wdHkgUHl0aG9uIHBhY2thZ2Ugd2hpY2ggcHJvdmlkZXMgbm8gY29tbWFuZCwgYHV2eCBmb29gIHdvdWxkIGludm9rZSB0aGUgYGZvb2AgY29tbWFuZCBvbiB0aGUgYFBBVEhgIChpZiBwcmVzZW50KS4gTm93LCB1diB3aWxsIGVycm9yIGVhcmx5IGlmIHRoZSBgZm9vYCBleGVjdXRhYmxlIGlzIG5vdCBwcm92aWRlZCBieSB0aGUgcmVxdWVzdGVkIFB5dGhvbiBwYWNrYWdlLiBUaGlzIGNoZWNrIGlzIG5vdCBlbmZvcmNlZCB3aGVuIGAtLWZyb21gIGlzIHVzZWQsIHNvIHBhdHRlcm5zIGxpa2UgYHV2eCAtLWZyb20gZm9vIGJhc2ggLWMgIi4uLiJgIGFyZSBzdGlsbCB2YWxpZC4gdXYgYWxzbyBzdGlsbCBhbGxvd3MgYHV2eCBmb29gIHdoZXJlIHRoZSBgZm9vYCBleGVjdXRhYmxlIGlzIHByb3ZpZGVkIGJ5IGEgZGVwZW5kZW5jeSBvZiBgZm9vYCBpbnN0ZWFkIG9mIGBmb29gIGl0c2VsZiwgYXMgdGhpcyBpcyBmYWlybHkgY29tbW9uIGZvciBwYWNrYWdlcyB3aGljaCBkZXBlbmQgb24gYSBkZWRpY2F0ZWQgcGFja2FnZSBmb3IgdGhlaXIgY29tbWFuZC1saW5lIGludGVyZmFjZS4KLSAgICoqVXNlIGluZGV4IFVSTCBpbnN0ZWFkIG9mIHBhY2thZ2UgVVJMIGZvciBrZXlyaW5nIGNyZWRlbnRpYWwgbG9va3VwcyAoWyMmIzgyMDM7MTI2NTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjY1MSkpKioKCiAgICBXaGVuIGRldGVybWluaW5nIGNyZWRlbnRpYWxzIGZvciBxdWVyeWluZyBhIHBhY2thZ2UgVVJMLCB1diBwcmV2aW91c2x5IHNlbnQgdGhlIGZ1bGwgVVJMIHRvIHRoZSBga2V5cmluZ2AgY29tbWFuZC4gSG93ZXZlciwgc29tZSBrZXlyaW5nIHBsdWdpbnMgZXhwZWN0IHRvIHJlY2VpdmUgdGhlICppbmRleCBVUkwqICh3aGljaCBpcyB1c3VhbGx5IGEgcGFyZW50IG9mIHRoZSBwYWNrYWdlIFVSTCkuIE5vdywgdXYgcmVxdWVzdHMgY3JlZGVudGlhbHMgZm9yIHRoZSBpbmRleCBVUkwgaW5zdGVhZC4gVGhpcyBiZWhhdmlvciBtYXRjaGVzIGBwaXBgLgotICAgKipSZW1vdmUgYC0tdmVyc2lvbmAgZnJvbSBzdWJjb21tYW5kcyAoWyMmIzgyMDM7MTMxMDhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMzEwOCkpKioKCiAgICBQcmV2aW91c2x5LCB1diBhbGxvd2VkIHRoZSBgLS12ZXJzaW9uYCBmbGFnIG9uIGFyYml0cmFyeSBzdWJjb21tYW5kcywgZS5nLiwgYHV2IHJ1biAtLXZlcnNpb25gLiBIb3dldmVyLCB0aGUgYC0tdmVyc2lvbmAgZmxhZyBpcyB1c2VmdWwgZm9yIG90aGVyIG9wZXJhdGlvbnMgc2luY2UgdXYgaXMgYSBwYWNrYWdlIG1hbmFnZXIuIENvbnNlcXVlbnRseSwgd2UndmUgcmVtb3ZlZCB0aGUgYC0tdmVyc2lvbmAgZmxhZyBmcm9tIHN1YmNvbW1hbmRzIOKAlCBpdCBpcyBvbmx5IGF2YWlsYWJsZSBhcyBgdXYgLS12ZXJzaW9uYC4KLSAgICoqT21pdCBQeXRob24gMy43IGRvd25sb2FkcyBmcm9tIG1hbmFnZWQgdmVyc2lvbnMgKFsjJiM4MjAzOzEzMDIyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMwMjIpKSoqCgogICAgUHl0aG9uIDMuNyBpcyBFT0wgYW5kIG5vdCBmb3JtYWxseSBzdXBwb3J0ZWQgYnkgdXY7IGhvd2V2ZXIsIFB5dGhvbiAzLjcgd2FzIHByZXZpb3VzbHkgYXZhaWxhYmxlIGZvciBkb3dubG9hZCBvbiBhIHN1YnNldCBvZiBwbGF0Zm9ybXMuCi0gICAqKlJlamVjdCBub24tUEVQIDc1MSBUT01MIGZpbGVzIGluIGluc3RhbGwsIGNvbXBpbGUsIGFuZCBleHBvcnQgY29tbWFuZHMgKFsjJiM4MjAzOzEzMTIwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMxMjApLCBbIyYjODIwMzsxMzExOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzMTE5KSkqKgoKICAgIFByZXZpb3VzbHksIHV2IHRyZWF0ZWQgYXJiaXRyYXJ5IGAudG9tbGAgZmlsZXMgcGFzc2VkIHRvIGNvbW1hbmRzIChlLmcuLCBgdXYgcGlwIGluc3RhbGwgLXIgZm9vLnRvbWxgIG9yIGB1diBwaXAgY29tcGlsZSAtbyBmb28udG9tbGApIGFzIGByZXF1aXJlbWVudHMudHh0YC1mb3JtYXR0ZWQgZmlsZXMuIE5vdywgdXYgd2lsbCBlcnJvciBpbnN0ZWFkLiBJZiB1c2luZyBQRVAgNzUxIGxvY2tmaWxlcywgdXNlIHRoZSBzdGFuZGFyZGl6ZWQgZm9ybWF0IGZvciBjdXN0b20gbmFtZXMgaW5zdGVhZCwgZS5nLiwgYHB5bG9jay5mb28udG9tbGAuCi0gICAqKklnbm9yZSBhcmJpdHJhcnkgUHl0aG9uIHJlcXVlc3RzIGluIHZlcnNpb24gZmlsZXMgKFsjJiM4MjAzOzEyOTA5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5MDkpKSoqCgogICAgdXYgYWxsb3dzIGFyYml0cmFyeSBzdHJpbmdzIHRvIGJlIHVzZWQgZm9yIFB5dGhvbiB2ZXJzaW9uIHJlcXVlc3RzLCBpbiB3aGljaCB0aGV5IGFyZSB0cmVhdGVkIGFzIGFuIGV4ZWN1dGFibGUgbmFtZSB0byBzZWFyY2ggZm9yIGluIHRoZSBgUEFUSGAuIEhvd2V2ZXIsIHVzaW5nIHRoaXMgZm9ybSBvZiByZXF1ZXN0IGluIGAucHl0aG9uLXZlcnNpb25gIGZpbGVzIGlzIG5vbi1zdGFuZGFyZCBhbmQgY29uZmxpY3RzIHdpdGggYHB5ZW52LXZpcnR1YWxlbnZgIHdoaWNoIHdyaXRlcyBlbnZpcm9ubWVudCBuYW1lcyB0byBgLnB5dGhvbi12ZXJzaW9uYCBmaWxlcy4gSW4gdGhpcyByZWxlYXNlLCB1diB3aWxsIG5vdyBpZ25vcmUgcmVxdWVzdHMgdGhhdCBhcmUgYXJiaXRyYXJ5IHN0cmluZ3Mgd2hlbiBmb3VuZCBpbiBgLnB5dGhvbi12ZXJzaW9uYCBmaWxlcy4KLSAgICoqRXJyb3Igb24gdW5rbm93biBkZXBlbmRlbmN5IG9iamVjdCBzcGVjaWZpZXJzIChbMTI4MTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjgxMSkpKioKCiAgICBUaGUgYFtkZXBlbmRlbmN5LWdyb3Vwc11gIGVudHJpZXMgY2FuIGluY2x1ZGUgIm9iamVjdCBzcGVjaWZpZXJzIiwgZS5nLiBgc2V0LXBoYXNlcnMtdG8gPSAuLi5gIGluOgoKICAgIGBgYHRvbWwKICAgIFtkZXBlbmRlbmN5LWdyb3Vwc10KICAgIGZvbyA9IFsicHlwYXJzaW5nIl0KICAgIGJhciA9IFt7c2V0LXBoYXNlcnMtdG8gPSAic3R1biJ9XQogICAgYGBgCgogICAgSG93ZXZlciwgdGhlIG9ubHkgY3VycmVudCBzcGVjLWNvbXBsaWFudCBvYmplY3Qgc3BlY2lmaWVyIGlzIGBpbmNsdWRlLWdyb3VwYC4gUHJldmlvdXNseSwgdXYgd291bGQgaWdub3JlIHVua25vd24gb2JqZWN0IHNwZWNpZmllcnMuIE5vdywgdXYgd2lsbCBlcnJvci4KLSAgICoqTWFrZSBgLS1mcm96ZW5gIGFuZCBgLS1uby1zb3VyY2VzYCBjb25mbGljdGluZyBvcHRpb25zIChbIyYjODIwMzsxMjY3MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjcxKSkqKgoKICAgIFVzaW5nIGAtLW5vLXNvdXJjZXNgIGFsd2F5cyByZXF1aXJlcyBhIG5ldyByZXNvbHV0aW9uIGFuZCBgLS1mcm96ZW5gIHdpbGwgYWx3YXlzIGZhaWwgd2hlbiB1c2VkIHdpdGggaXQuIE5vdywgdGhpcyBjb25mbGljdCBpcyBlbmNvZGVkIGluIHRoZSBDTEkgb3B0aW9ucyBmb3IgY2xhcml0eS4KLSAgICoqVHJlYXQgZW1wdHkgYFVWX1BZVEhPTl9JTlNUQUxMX0RJUmAgYW5kIGBVVl9UT09MX0RJUmAgYXMgdW5zZXQgKFsjJiM4MjAzOzEyOTA3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5MDcpLCBbIyYjODIwMzsxMjkwNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTA1KSkqKgoKICAgIFByZXZpb3VzbHksIHRoZXNlIHZhcmlhYmxlcyB3ZXJlIHRyZWF0ZWQgYXMgc2V0IHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHdoZW4gc2V0IHRvIGFuIGVtcHR5IHN0cmluZy4gTm93LCB1diB3aWxsIGlnbm9yZSB0aGVzZSB2YXJpYWJsZXMgd2hlbiBlbXB0eS4gVGhpcyBtYXRjaGVzIHV2J3MgYmVoYXZpb3IgZm9yIG90aGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aGljaCBjb25maWd1cmUgZGlyZWN0b3JpZXMuCgojIyMjIyBFbmhhbmNlbWVudHMKCi0gICBEaXNhbGxvdyBtaXhpbmcgcmVxdWlyZW1lbnRzIGFjcm9zcyBQeVRvcmNoIGluZGV4ZXMgKFsjJiM4MjAzOzEzMTc5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMxNzkpKQotICAgQWRkIG9wdGlvbmFsIG1hbmFnZWQgUHl0aG9uIGFyY2hpdmUgZG93bmxvYWQgY2FjaGUgKFsjJiM4MjAzOzEyMTc1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTIxNzUpKQotICAgQWRkIGBwb2V0cnktY29yZWAgYXMgYSBgdXYgaW5pdGAgYnVpbGQgYmFja2VuZCBvcHRpb24gKFsjJiM4MjAzOzEyNzgxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI3ODEpKQotICAgU2hvdyB0YWcgaGludHMgd2hlbiBmYWlsaW5nIHRvIGZpbmQgYSBjb21wYXRpYmxlIHdoZWVsIGluIGBweWxvY2sudG9tbGAgKFsjJiM4MjAzOzEzMTM2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMxMzYpKQotICAgUmVwb3J0IFB5dGhvbiB2ZXJzaW9ucyBpbiBgcHl2ZW52LmNmZ2AgdmVyc2lvbiBtaXNtYXRjaCAoWyMmIzgyMDM7MTMwMjddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMzAyNykpCgojIyMjIyBCdWcgZml4ZXMKCi0gICBBdm9pZCBlcnJvcmluZyBvbiBvbWl0dGVkIHdoZWVsLW9ubHkgcGFja2FnZXMgaW4gYHB5bG9jay50b21sYCAoWyMmIzgyMDM7MTMxMzJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMzEzMikpCi0gICBGaXggZGlzcGxheSBuYW1lIGZvciBgdXZ4IC0tdmVyc2lvbmAgKFsjJiM4MjAzOzEzMTA5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMxMDkpKQotICAgUmVzdG9yZSBoYW5kbGluZyBvZiBhdXRoZW50aWNhdGlvbiB3aGVuIGVuY291bnRlcmluZyByZWRpcmVjdHMgKFsjJiM4MjAzOzEzMDUwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMwNTApKQotICAgUmVzcGVjdCBidWlsZCBvcHRpb25zIChgLS1uby1iaW5hcnlgIGV0IGFsKSBpbiBgcHlsb2NrLnRvbWxgIChbIyYjODIwMzsxMzEzNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzMTM0KSkKLSAgIFVzZSBgdXBsb2FkLXRpbWVgIHJhdGhlciB0aGFuIGB1cGxvYWRfdGltZWAgaW4gYHV2LmxvY2tgIChbIyYjODIwMzsxMzE3Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzMTc2KSkKCiMjIyMjIERvY3VtZW50YXRpb24KCi0gICBDaGFuZ2VkIGBmaXNoYCBjb21wbGV0aW9ucyBhcHBlbmQgYD4+YCB0byBvdmVyd3JpdGUgYD5gIChbIyYjODIwMzsxMzEzMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzMTMwKSkKLSAgIEFkZCBgcHlsb2NrLnRvbWxgIG1lbnRpb25zIHdoZXJlIHJlbGV2YW50IChbIyYjODIwMzsxMzExNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzMTE1KSkKLSAgIEFkZCBST0NtIGV4YW1wbGUgdG8gdGhlIFB5VG9yY2ggZ3VpZGUgKFsjJiM4MjAzOzEzMjAwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMyMDApKQotICAgVXBncmFkZSBQeVRvcmNoIGd1aWRlIHRvIENVREEgMTIuOCBhbmQgUHlUb3JjaCAyLjcgKFsjJiM4MjAzOzEzMTk5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMxOTkpKQoKIyMjIFtgdjAuNi4xN2BdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvdGFnLzAuNi4xNykKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9jb21wYXJlLzAuNi4xNi4uLjAuNi4xNykKCiMjIyMgUmVsZWFzZSBOb3RlcwoKIyMjIyMgUHJldmlldyBmZWF0dXJlcwoKLSAgIEFkZCBQeVRvcmNoIHYyLjcuMCB0byBHUFUgYmFja2VuZCAoWyMmIzgyMDM7MTMwNzJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMzA3MikpCgojIyMjIyBCdWcgZml4ZXMKCi0gICBBdm9pZCBwYW5pYyBmb3IgaW52YWxpZCBQeXRob24gdmVyc2lvbnMgKFsjJiM4MjAzOzEzMDc3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMwNzcpKQotICAgQmxvY2sgc2NyaXB0cyBmcm9tIG92ZXJ3cml0aW5nIGBweXRob25gIChbIyYjODIwMzsxMzA1MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzMDUxKSkKLSAgIENoZWNrIGRpc3RyaWJ1dGlvbiBuYW1lcyB0byBoYW5kbGUgaW52YWxpZCByZWRpcmVjdHMgKFsjJiM4MjAzOzEyOTE3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5MTcpKQotICAgQ2hlY2sgZm9yIG1pc21hdGNoZWQgcGFja2FnZSBhbmQgZGlzdHJpYnV0aW9uIG5hbWVzIG9uIHJlc29sdmVyIHRocmVhZCAoWyMmIzgyMDM7MTMwODhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMzA4OCkpCi0gICBGaXggcGFuaWMgd2l0aCBpbnZhbGlkIGxhc3QgY2hhcmFjdGVyIGluIFBFUCA1MDggbmFtZSAoWyMmIzgyMDM7MTMxMDVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMzEwNSkpCi0gICBSZWplY3QgYHJlcXVpcmVzLXB5dGhvbmAgZXZlbiBpZiBub3QgbGlzdGVkIG9uIHRoZSBpbmRleCBwYWdlIChbIyYjODIwMzsxMzA4Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzMDg2KSkKCiMjIyMgSW5zdGFsbCB1diAwLjYuMTcKCiMjIyMjIEluc3RhbGwgcHJlYnVpbHQgYmluYXJpZXMgdmlhIHNoZWxsIHNjcmlwdAoKYGBgc2gKY3VybCAtLXByb3RvICc9aHR0cHMnIC0tdGxzdjEuMiAtTHNTZiBodHRwczovL2dpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di1pbnN0YWxsZXIuc2ggfCBzaApgYGAKCiMjIyMjIEluc3RhbGwgcHJlYnVpbHQgYmluYXJpZXMgdmlhIHBvd2Vyc2hlbGwgc2NyaXB0CgpgYGBzaApwb3dlcnNoZWxsIC1FeGVjdXRpb25Qb2xpY3kgQnlwYXNzIC1jICJpcm0gaHR0cHM6Ly9naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTcvdXYtaW5zdGFsbGVyLnBzMSB8IGlleCIKYGBgCgojIyMjIERvd25sb2FkIHV2IDAuNi4xNwoKfCAgRmlsZSAgfCBQbGF0Zm9ybSB8IENoZWNrc3VtIHwKfC0tLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLXwKfCBbdXYtYWFyY2g2NC1hcHBsZS1kYXJ3aW4udGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di1hYXJjaDY0LWFwcGxlLWRhcndpbi50YXIuZ3opIHwgQXBwbGUgU2lsaWNvbiBtYWNPUyB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTcvdXYtYWFyY2g2NC1hcHBsZS1kYXJ3aW4udGFyLmd6LnNoYTI1NikgfAp8IFt1di14ODZcXzY0LWFwcGxlLWRhcndpbi50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE3L3V2LXg4NlxfNjQtYXBwbGUtZGFyd2luLnRhci5neikgfCBJbnRlbCBtYWNPUyB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTcvdXYteDg2XF82NC1hcHBsZS1kYXJ3aW4udGFyLmd6LnNoYTI1NikgfAp8IFt1di1hYXJjaDY0LXBjLXdpbmRvd3MtbXN2Yy56aXBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE3L3V2LWFhcmNoNjQtcGMtd2luZG93cy1tc3ZjLnppcCkgfCBBUk02NCBXaW5kb3dzIHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di1hYXJjaDY0LXBjLXdpbmRvd3MtbXN2Yy56aXAuc2hhMjU2KSB8CnwgW3V2LWk2ODYtcGMtd2luZG93cy1tc3ZjLnppcF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTcvdXYtaTY4Ni1wYy13aW5kb3dzLW1zdmMuemlwKSB8IHg4NiBXaW5kb3dzIHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di1pNjg2LXBjLXdpbmRvd3MtbXN2Yy56aXAuc2hhMjU2KSB8CnwgW3V2LXg4NlxfNjQtcGMtd2luZG93cy1tc3ZjLnppcF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTcvdXYteDg2XF82NC1wYy13aW5kb3dzLW1zdmMuemlwKSB8IHg2NCBXaW5kb3dzIHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di14ODZcXzY0LXBjLXdpbmRvd3MtbXN2Yy56aXAuc2hhMjU2KSB8CnwgW3V2LWFhcmNoNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di1hYXJjaDY0LXVua25vd24tbGludXgtZ251LnRhci5neikgfCBBUk02NCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTcvdXYtYWFyY2g2NC11bmtub3duLWxpbnV4LWdudS50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LWk2ODYtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di1pNjg2LXVua25vd24tbGludXgtZ251LnRhci5neikgfCB4ODYgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE3L3V2LWk2ODYtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6KSB8IFBQQzY0IExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudS50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE3L3V2LXBvd2VycGM2NGxlLXVua25vd24tbGludXgtZ251LnRhci5neikgfCBQUEM2NExFIExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudS50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LXMzOTB4LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTcvdXYtczM5MHgtdW5rbm93bi1saW51eC1nbnUudGFyLmd6KSB8IFMzOTB4IExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di1zMzkweC11bmtub3duLWxpbnV4LWdudS50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LXg4NlxfNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di14ODZcXzY0LXVua25vd24tbGludXgtZ251LnRhci5neikgfCB4NjQgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE3L3V2LXg4NlxfNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1hcm12Ny11bmtub3duLWxpbnV4LWdudWVhYmloZi50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE3L3V2LWFybXY3LXVua25vd24tbGludXgtZ251ZWFiaWhmLnRhci5neikgfCBBUk12NyBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTcvdXYtYXJtdjctdW5rbm93bi1saW51eC1nbnVlYWJpaGYudGFyLmd6LnNoYTI1NikgfAp8IFt1di1hYXJjaDY0LXVua25vd24tbGludXgtbXVzbC50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE3L3V2LWFhcmNoNjQtdW5rbm93bi1saW51eC1tdXNsLnRhci5neikgfCBBUk02NCBNVVNMIExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di1hYXJjaDY0LXVua25vd24tbGludXgtbXVzbC50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LWk2ODYtdW5rbm93bi1saW51eC1tdXNsLnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTcvdXYtaTY4Ni11bmtub3duLWxpbnV4LW11c2wudGFyLmd6KSB8IHg4NiBNVVNMIExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di1pNjg2LXVua25vd24tbGludXgtbXVzbC50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LXg4NlxfNjQtdW5rbm93bi1saW51eC1tdXNsLnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTcvdXYteDg2XF82NC11bmtub3duLWxpbnV4LW11c2wudGFyLmd6KSB8IHg2NCBNVVNMIExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di14ODZcXzY0LXVua25vd24tbGludXgtbXVzbC50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LWFybS11bmtub3duLWxpbnV4LW11c2xlYWJpaGYudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di1hcm0tdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5neikgfCBBUk12NiBNVVNMIExpbnV4IChIYXJkZmxvYXQpIHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di1hcm0tdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5nei5zaGEyNTYpIHwKfCBbdXYtYXJtdjctdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTcvdXYtYXJtdjctdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5neikgfCBBUk12NyBNVVNMIExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNy91di1hcm12Ny11bmtub3duLWxpbnV4LW11c2xlYWJpaGYudGFyLmd6LnNoYTI1NikgfAoKIyMjIFtgdjAuNi4xNmBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvdGFnLzAuNi4xNikKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9jb21wYXJlLzAuNi4xNS4uLjAuNi4xNikKCiMjIyMgUmVsZWFzZSBOb3RlcwoKIyMjIyMgQnVnIGZpeGVzCgotICAgUmV2ZXJ0ICJQcm9wZXJseSBoYW5kbGUgYXV0aGVudGljYXRpb24gZm9yIDMwMiByZWRpcmVjdCBVUkxzIiAoWyMmIzgyMDM7MTMwNDFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMzA0MSkpCgojIyMjIEluc3RhbGwgdXYgMC42LjE2CgojIyMjIyBJbnN0YWxsIHByZWJ1aWx0IGJpbmFyaWVzIHZpYSBzaGVsbCBzY3JpcHQKCmBgYHNoCmN1cmwgLS1wcm90byAnPWh0dHBzJyAtLXRsc3YxLjIgLUxzU2YgaHR0cHM6Ly9naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYtaW5zdGFsbGVyLnNoIHwgc2gKYGBgCgojIyMjIyBJbnN0YWxsIHByZWJ1aWx0IGJpbmFyaWVzIHZpYSBwb3dlcnNoZWxsIHNjcmlwdAoKYGBgc2gKcG93ZXJzaGVsbCAtRXhlY3V0aW9uUG9saWN5IEJ5cGFzcyAtYyAiaXJtIGh0dHBzOi8vZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE2L3V2LWluc3RhbGxlci5wczEgfCBpZXgiCmBgYAoKIyMjIyBEb3dubG9hZCB1diAwLjYuMTYKCnwgIEZpbGUgIHwgUGxhdGZvcm0gfCBDaGVja3N1bSB8CnwtLS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgW3V2LWFhcmNoNjQtYXBwbGUtZGFyd2luLnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYtYWFyY2g2NC1hcHBsZS1kYXJ3aW4udGFyLmd6KSB8IEFwcGxlIFNpbGljb24gbWFjT1MgfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE2L3V2LWFhcmNoNjQtYXBwbGUtZGFyd2luLnRhci5nei5zaGEyNTYpIHwKfCBbdXYteDg2XF82NC1hcHBsZS1kYXJ3aW4udGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNi91di14ODZcXzY0LWFwcGxlLWRhcndpbi50YXIuZ3opIHwgSW50ZWwgbWFjT1MgfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE2L3V2LXg4NlxfNjQtYXBwbGUtZGFyd2luLnRhci5nei5zaGEyNTYpIHwKfCBbdXYtYWFyY2g2NC1wYy13aW5kb3dzLW1zdmMuemlwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNi91di1hYXJjaDY0LXBjLXdpbmRvd3MtbXN2Yy56aXApIHwgQVJNNjQgV2luZG93cyB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYtYWFyY2g2NC1wYy13aW5kb3dzLW1zdmMuemlwLnNoYTI1NikgfAp8IFt1di1pNjg2LXBjLXdpbmRvd3MtbXN2Yy56aXBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE2L3V2LWk2ODYtcGMtd2luZG93cy1tc3ZjLnppcCkgfCB4ODYgV2luZG93cyB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYtaTY4Ni1wYy13aW5kb3dzLW1zdmMuemlwLnNoYTI1NikgfAp8IFt1di14ODZcXzY0LXBjLXdpbmRvd3MtbXN2Yy56aXBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE2L3V2LXg4NlxfNjQtcGMtd2luZG93cy1tc3ZjLnppcCkgfCB4NjQgV2luZG93cyB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYteDg2XF82NC1wYy13aW5kb3dzLW1zdmMuemlwLnNoYTI1NikgfAp8IFt1di1hYXJjaDY0LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYtYWFyY2g2NC11bmtub3duLWxpbnV4LWdudS50YXIuZ3opIHwgQVJNNjQgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE2L3V2LWFhcmNoNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1pNjg2LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYtaTY4Ni11bmtub3duLWxpbnV4LWdudS50YXIuZ3opIHwgeDg2IExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNi91di1pNjg2LXVua25vd24tbGludXgtZ251LnRhci5nei5zaGEyNTYpIHwKfCBbdXYtcG93ZXJwYzY0LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYtcG93ZXJwYzY0LXVua25vd24tbGludXgtZ251LnRhci5neikgfCBQUEM2NCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYtcG93ZXJwYzY0LXVua25vd24tbGludXgtZ251LnRhci5nei5zaGEyNTYpIHwKfCBbdXYtcG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNi91di1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudS50YXIuZ3opIHwgUFBDNjRMRSBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYtcG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1zMzkweC11bmtub3duLWxpbnV4LWdudS50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE2L3V2LXMzOTB4LXVua25vd24tbGludXgtZ251LnRhci5neikgfCBTMzkweCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYtczM5MHgtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di14ODZcXzY0LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYteDg2XF82NC11bmtub3duLWxpbnV4LWdudS50YXIuZ3opIHwgeDY0IExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNi91di14ODZcXzY0LXVua25vd24tbGludXgtZ251LnRhci5nei5zaGEyNTYpIHwKfCBbdXYtYXJtdjctdW5rbm93bi1saW51eC1nbnVlYWJpaGYudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNi91di1hcm12Ny11bmtub3duLWxpbnV4LWdudWVhYmloZi50YXIuZ3opIHwgQVJNdjcgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE2L3V2LWFybXY3LXVua25vd24tbGludXgtZ251ZWFiaWhmLnRhci5nei5zaGEyNTYpIHwKfCBbdXYtYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2wudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNi91di1hYXJjaDY0LXVua25vd24tbGludXgtbXVzbC50YXIuZ3opIHwgQVJNNjQgTVVTTCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYtYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2wudGFyLmd6LnNoYTI1NikgfAp8IFt1di1pNjg2LXVua25vd24tbGludXgtbXVzbC50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE2L3V2LWk2ODYtdW5rbm93bi1saW51eC1tdXNsLnRhci5neikgfCB4ODYgTVVTTCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYtaTY4Ni11bmtub3duLWxpbnV4LW11c2wudGFyLmd6LnNoYTI1NikgfAp8IFt1di14ODZcXzY0LXVua25vd24tbGludXgtbXVzbC50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE2L3V2LXg4NlxfNjQtdW5rbm93bi1saW51eC1tdXNsLnRhci5neikgfCB4NjQgTVVTTCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYteDg2XF82NC11bmtub3duLWxpbnV4LW11c2wudGFyLmd6LnNoYTI1NikgfAp8IFt1di1hcm0tdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYtYXJtLXVua25vd24tbGludXgtbXVzbGVhYmloZi50YXIuZ3opIHwgQVJNdjYgTVVTTCBMaW51eCAoSGFyZGZsb2F0KSB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYtYXJtLXVua25vd24tbGludXgtbXVzbGVhYmloZi50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LWFybXY3LXVua25vd24tbGludXgtbXVzbGVhYmloZi50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE2L3V2LWFybXY3LXVua25vd24tbGludXgtbXVzbGVhYmloZi50YXIuZ3opIHwgQVJNdjcgTVVTTCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTYvdXYtYXJtdjctdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5nei5zaGEyNTYpIHwKCiMjIyBbYHYwLjYuMTVgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL3RhZy8wLjYuMTUpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvY29tcGFyZS8wLjYuMTQuLi4wLjYuMTUpCgojIyMjIFJlbGVhc2UgTm90ZXMKClRoaXMgcmVsZWFzZSBpbmNsdWRlcyBwcmVsaW1pbmFyeSBzdXBwb3J0IGZvciB0aGUgYHB5bG9jay50b21sYCBmaWxlIGZvcm1hdCwgYXMgc3RhbmRhcmRpemVkIGluIFtQRVAgNzUxXShodHRwczovL3BlcHMucHl0aG9uLm9yZy9wZXAtMDc1MS8pLiBgcHlsb2NrLnRvbWxgIGlzIGFuIGFsdGVybmF0aXZlIHJlc29sdXRpb24gb3V0cHV0IGZvcm1hdCBpbnRlbmRlZCB0byByZXBsYWNlIGByZXF1aXJlbWVudHMudHh0YCAoZS5nLiwgaW4gdGhlIGNvbnRleHQgb2YgYHV2IHBpcCBjb21waWxlYCwgd2hlcmVieSBhICJsb2NrZWQiIGByZXF1aXJlbWVudHMudHh0YCBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIGEgc2V0IG9mIGlucHV0IHJlcXVpcmVtZW50cykuIGBweWxvY2sudG9tbGAgaXMgc3RhbmRhcmRpemVkIGFuZCB0b29sLWFnbm9zdGljLCBzdWNoIHRoYXQgaW4gdGhlIGZ1dHVyZSwgYHB5bG9jay50b21sYCBmaWxlcyBnZW5lcmF0ZWQgYnkgdXYgY291bGQgYmUgaW5zdGFsbGVkIGJ5IG90aGVyIHRvb2xzLCBhbmQgdmljZSB2ZXJzYS4KCkFzIG9mIHRoaXMgcmVsZWFzZSwgYHB5bG9jay50b21sYCBpcyBzdXBwb3J0ZWQgaW4gdGhlIGZvbGxvd2luZyBjb21tYW5kczoKCi0gICBUbyBleHBvcnQgYSBgdXYubG9ja2AgdG8gdGhlIGBweWxvY2sudG9tbGAgZm9ybWF0LCBydW46IGB1diBleHBvcnQgLW8gcHlsb2NrLnRvbWxgCi0gICBUbyBnZW5lcmF0ZSBhIGBweWxvY2sudG9tbGAgZmlsZSBmcm9tIGEgc2V0IG9mIHJlcXVpcmVtZW50cywgcnVuOiBgdXYgcGlwIGNvbXBpbGUgLW8gcHlsb2NrLnRvbWwgcmVxdWlyZW1lbnRzLmluYAotICAgVG8gaW5zdGFsbCBmcm9tIGEgYHB5bG9jay50b21sYCBmaWxlLCBydW46IGB1diBwaXAgc3luYyBweWxvY2sudG9tbGAgb3IgYHV2IHBpcCBpbnN0YWxsIC1yIHB5bG9jay50b21sYAoKIyMjIyMgRW5oYW5jZW1lbnRzCgotICAgQWRkIFBFUCA3NTEgc3VwcG9ydCB0byBgdXYgcGlwIGNvbXBpbGVgIChbIyYjODIwMzsxMzAxOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzMDE5KSkKLSAgIEFkZCBgdXYgZXhwb3J0YCBzdXBwb3J0IGZvciBQRVAgNzUxIChbIyYjODIwMzsxMjk1NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTU1KSkKLSAgIEFjY2VwdCBgcmVxdWlyZW1lbnRzLnR4dGAgKHZlcmJhdGltKSBhcyBhIGZvcm1hdCBvbiB0aGUgQ0xJIChbIyYjODIwMzsxMjk1N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTU3KSkKLSAgIEFkZCBgVVZfTk9fRURJVEFCTEVgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHNldCBgLS1uby1lZGl0YWJsZWAgb24gYWxsIGludm9jYXRpb25zIChbIyYjODIwMzsxMjc3M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNzczKSkKLSAgIEFkZCBgcHlsb2NrLnRvbWxgIHRvIGB1diBwaXAgaW5zdGFsbGAgYW5kIGB1diBwaXAgc3luY2AgKFsjJiM4MjAzOzEyOTkyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5OTIpKQotICAgQWRkIGEgYnJpZWYgc2xlZXAgYmVmb3JlIHNlbmRpbmcgYFNJR0lOVGAgdG8gY2hpbGQgcHJvY2Vzc2VzIChbIyYjODIwMzsxMzAxOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzMDE4KSkKLSAgIEFkZCB1cGxvYWQgdGltZSB0byBgdXYubG9ja2AgKFsjJiM4MjAzOzEyOTY4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5NjgpKQotICAgQWxsb3cgdXBkYXRpbmcgR2l0IHNvdXJjZXMgYnkgbmFtZSAoWyMmIzgyMDM7MTI4OTddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjg5NykpCi0gICBDYWNoZSBgd2hpY2ggZ2l0YCBpbiBgdXYgaW5pdGAgKFsjJiM4MjAzOzEyODkzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4OTMpKQotICAgRW5hYmxlIGAtLWRyeS1ydW5gIHdpdGggYC0tbG9ja2VkYCAvIGAtLWZyb3plbmAgZm9yIGB1diBzeW5jYCAoWyMmIzgyMDM7MTI3NzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjc3OCkpCi0gICBJbmZlciBvdXRwdXQgdHlwZSBpbiBgdXYgZXhwb3J0YCAoWyMmIzgyMDM7MTI5NThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjk1OCkpCi0gICBNYWtlIGB1diBpbml0YCByZXNpbGllbnQgYWdhaW5zdCBicm9rZW4gZ2l0IChbIyYjODIwMzsxMjg5NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyODk1KSkKLSAgIFJlc3BlY3QgYnVpbGQgY29uc3RyYWludHMgZm9yIGB1diBydW4gLS13aXRoYCBkZXBlbmRlbmNpZXMgKFsjJiM4MjAzOzEyODgyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4ODIpKQotICAgU3BsaXQgVVZfSU5ERVggb24gYWxsIHdoaXRlc3BhY2UgKFsjJiM4MjAzOzEyODIwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4MjApKQotICAgU3VwcG9ydCBidWlsZCBjb25zdHJhaW50cyBpbiBgdXYgdG9vbGAgYW5kIFBFUDcyMyBzY3JpcHRzLiAoWyMmIzgyMDM7MTI4NDJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjg0MikpCi0gICBVc2Ugc3VmZml4IGZyb20gYHV2eGAgYmluYXJ5IHdoZW4gc2VhcmNoaW5nIGZvciB1diBiaW5hcnkgKFsjJiM4MjAzOzEyOTIzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5MjMpKQotICAgVXBkYXRlIHZlcnNpb24gZm9ybWF0dGluZyB0byB1c2UgY3lhbiBjb2xvciAoWyMmIzgyMDM7MTI5NDNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjk0MykpCi0gICBBZGQgZGVidWcgbG9ncyBmb3IgdmVyc2lvbiBmaWxlIHNlYXJjaCAoWyMmIzgyMDM7MTI5NTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjk1MSkpCi0gICBGaXggYFNvdXJjZU5vdEFsbG93ZWRgIGVycm9yIG1lc3NhZ2UgZHVyaW5nIFB5dGhvbiBkaXNjb3ZlcnkgKFsjJiM4MjAzOzEzMDEyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMwMTIpKQotICAgT2JmdXNjYXRlIHBhc3N3b3JkIGluIGNyZWRlbnRpYWxzIGRlYnVnIG1lc3NhZ2VzIChbIyYjODIwMzsxMjk0NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTQ0KSkKLSAgIE9iZnVzY2F0ZSBwb3NzaWJsZSB0b2tlbnMgaW4gVVJMIGxvZ3MgKFsjJiM4MjAzOzEyOTY5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5NjkpKQotICAgVmFsaWRhdGUgdGhhdCBQRVAgNzUxIGVudHJpZXMgZG9uJ3QgaW5jbHVkZSBtdWx0aXBsZSBzb3VyY2VzIChbIyYjODIwMzsxMjk5M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTkzKSkKCiMjIyMjIFByZXZpZXcgZmVhdHVyZXMKCi0gICBCdWlsZCBiYWNrZW5kOiBBZGQgcmVmZXJlbmNlIGRvY3MgYW5kIHNjaGVtYSAoWyMmIzgyMDM7MTI4MDNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjgwMykpCgojIyMjIyBCdWcgZml4ZXMKCi0gICBBbGlnbiBzdXBwb3J0ZWQgYGNvbmZpZy1zZXR0aW5nc2Agd2l0aCBleGFtcGxlIGluIGRvY3MgKFsjJiM4MjAzOzEyOTQ3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5NDcpKQotICAgRW5zdXJlIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgY29tcGF0aWJsZSB3aXRoIGludGVycHJldGVyIG9uIHN5bmMgKFsjJiM4MjAzOzEyODg0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4ODQpKQotICAgRml4IGBQeXRob25Eb3dubG9hZFJlcXVlc3RgIHBhcnNpbmcgZm9yIHBhcnRpYWwga2V5cyAoWyMmIzgyMDM7MTI5MjVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjkyNSkpCi0gICBGaXggcHJlLXJlbGVhc2UgZXhjbHVzaXZlIGNvbXBhcmlzb24gb3BlcmF0b3IgaW4gYHV2LXBlcDQ0MGAgKFsjJiM4MjAzOzEyODM2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4MzYpKQotICAgRm9yd2FyZCBhZGRpdGlvbmFsIHNpZ25hbHMgdG8gdGhlIGNoaWxkIHByb2Nlc3MgaW4gYHV2IHJ1bmAgKFsjJiM4MjAzOzEzMDE3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMwMTcpKQotICAgT21pdCBQRVAgNzUxIHZlcnNpb24gZm9yIHNvdXJjZSB0cmVlcyAoWyMmIzgyMDM7MTMwMzBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMzAzMCkpCi0gICBQYXRjaCBgQ0NgIGFuZCBgQ0NYYCBlbnRyaWVzIGluIHN5c2NvbmZpZyBmb3IgY3Jvc3MtY29tcGlsZWQgYGFhcmNoNjRgIFB5dGhvbiBkaXN0cmlidXRpb25zIChbIyYjODIwMzsxMjIzOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyMjM5KSkKLSAgIFByb3Blcmx5IGhhbmRsZSBhdXRoZW50aWNhdGlvbiBmb3IgSFRUUCAzMDIgcmVkaXJlY3QgVVJMcyAoWyMmIzgyMDM7MTI5MjBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjkyMCkpCi0gICBTZXQgNE1CIHN0YWNrIHNpemUgZm9yIGFsbCB0aHJlYWRzLCBpbnRyb2R1Y2UgYFVWX1NUQUNLX1NJWkVgIChbIyYjODIwMzsxMjgzOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyODM5KSkKLSAgIFNob3cgUHlQeSBkb3dubG9hZHMgZHVyaW5nIGB1diBweXRob24gbGlzdGAgKFsjJiM4MjAzOzEyOTE1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5MTUpKQotICAgQWRkIGBzdWJkaXJlY3RvcnlgIHRvIERpcmVjdCBVUkwgZm9yIGxvY2FsIGRpcmVjdG9yaWVzIChbIyYjODIwMzsxMjk3MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTcxKSkKLSAgIFByZWZlciBzdGFibGUgcmVsZWFzZXMgb3ZlciBwcmUtcmVsZWFzZXMgaW4gYHV2IHB5dGhvbiBpbnN0YWxsYCAoWyMmIzgyMDM7MTIxOTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjE5NCkpCi0gICBXcml0ZSByZXF1ZXN0ZWQgUHl0aG9uIHZhcmlhbnQgdG8gcGluIGZpbGUgaW4gYHV2IGluaXRgIChbIyYjODIwMzsxMjg3MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyODcwKSkKCiMjIyMjIERvY3VtZW50YXRpb24KCi0gICBGaXggQ0xJIHJlZmVyZW5jZSB3aXRoIGNvZGUgYmxvY2sgKFsjJiM4MjAzOzEyODA3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4MDcpKQotICAgRml4IGxvY2tmaWxlIG5vdGUgKFsjJiM4MjAzOzEyNzkzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI3OTMpKQotICAgRml4IHR5cG8gaW4gYSByZWZlcmVuY2UgKFsjJiM4MjAzOzEyODU4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4NTgpKQotICAgSW1wcm92ZSBkb2NzIGZvciBgdXYgcHl0aG9uIGxpc3QgLS1vbmx5LWRvd25sb2Fkc2AgYW5kIGAtLW9ubHktaW5zdGFsbGVkYCAoWyMmIzgyMDM7MTI5MTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjkxNikpCi0gICBVcGRhdGUgbm90ZSBvbiBsYWNrIG9mIG11c2wgZGlzdHJpYnV0aW9ucyB0byBBUk0tb25seSAoWyMmIzgyMDM7MTI4MjVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjgyNSkpCi0gICBBZGQgc2VjdGlvbiBvbiBzaGViYW5ncyBmb3Igc2NyaXB0cyAoWyMmIzgyMDM7MTE1NTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMTU1MykpCi0gICBEaXNwbGF5IGFsaWFzZXMgZm9yIGxvbmcgYW5kIHNob3J0IGFyZ3MgaW4gdGhlIENMSSByZWZlcmVuY2UgKFsjJiM4MjAzOzEyODI0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4MjQpKQotICAgRml4IGhpZ2hsaWdodCBsaW5lIGluIGV4cGxpY2l0IGluZGV4IGRvY3VtZW50YXRpb24gKFsjJiM4MjAzOzEyODg3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4ODcpKQotICAgQWRkIGV4cGxpY2l0IHNvdXJjZSAobWF0Y2hpbmcgUHlUb3JjaCBndWlkZSkgKFsjJiM4MjAzOzEyODQ0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4NDQpKQotICAgRml4IGxpbmsgdG8gaXNzdWUgKFsjJiM4MjAzOzEyODIzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4MjMpKQotICAgRml4IGdyYW1tYXRpY2FsIGVycm9yIGluIEZhc3RBUEkgZ3VpZGUgKFsjJiM4MjAzOzEyOTA4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5MDgpKQotICAgQWRkIGAtLWxvY2tlZGAgdG8gYHV2IHN5bmNgIGluIEdpdEh1YiBBY3Rpb25zIGd1aWRlIChbIyYjODIwMzsxMjgxOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyODE5KSkKLSAgIEltcHJvdmUgZm9ybWF0dGluZyBmb3IgYCJhbGwiYCBgZGVmYXVsdC1ncm91cHNgIHNldHRpbmcgZG9jdW1lbnRhdGlvbiAoWyMmIzgyMDM7MTI5NjNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjk2MykpCi0gICBSZXBsYWNlIGAtLWZyb3plbmAgd2l0aCBgLS1sb2NrZWRgIGluIERvY2tlciBpbnRlZ3JhdGlvbiBndWlkZSAoWyMmIzgyMDM7MTI4MThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjgxOCkpCgojIyMjIEluc3RhbGwgdXYgMC42LjE1CgojIyMjIyBJbnN0YWxsIHByZWJ1aWx0IGJpbmFyaWVzIHZpYSBzaGVsbCBzY3JpcHQKCmBgYHNoCmN1cmwgLS1wcm90byAnPWh0dHBzJyAtLXRsc3YxLjIgLUxzU2YgaHR0cHM6Ly9naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYtaW5zdGFsbGVyLnNoIHwgc2gKYGBgCgojIyMjIyBJbnN0YWxsIHByZWJ1aWx0IGJpbmFyaWVzIHZpYSBwb3dlcnNoZWxsIHNjcmlwdAoKYGBgc2gKcG93ZXJzaGVsbCAtRXhlY3V0aW9uUG9saWN5IEJ5cGFzcyAtYyAiaXJtIGh0dHBzOi8vZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE1L3V2LWluc3RhbGxlci5wczEgfCBpZXgiCmBgYAoKIyMjIyBEb3dubG9hZCB1diAwLjYuMTUKCnwgIEZpbGUgIHwgUGxhdGZvcm0gfCBDaGVja3N1bSB8CnwtLS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgW3V2LWFhcmNoNjQtYXBwbGUtZGFyd2luLnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYtYWFyY2g2NC1hcHBsZS1kYXJ3aW4udGFyLmd6KSB8IEFwcGxlIFNpbGljb24gbWFjT1MgfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE1L3V2LWFhcmNoNjQtYXBwbGUtZGFyd2luLnRhci5nei5zaGEyNTYpIHwKfCBbdXYteDg2XF82NC1hcHBsZS1kYXJ3aW4udGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNS91di14ODZcXzY0LWFwcGxlLWRhcndpbi50YXIuZ3opIHwgSW50ZWwgbWFjT1MgfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE1L3V2LXg4NlxfNjQtYXBwbGUtZGFyd2luLnRhci5nei5zaGEyNTYpIHwKfCBbdXYtYWFyY2g2NC1wYy13aW5kb3dzLW1zdmMuemlwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNS91di1hYXJjaDY0LXBjLXdpbmRvd3MtbXN2Yy56aXApIHwgQVJNNjQgV2luZG93cyB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYtYWFyY2g2NC1wYy13aW5kb3dzLW1zdmMuemlwLnNoYTI1NikgfAp8IFt1di1pNjg2LXBjLXdpbmRvd3MtbXN2Yy56aXBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE1L3V2LWk2ODYtcGMtd2luZG93cy1tc3ZjLnppcCkgfCB4ODYgV2luZG93cyB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYtaTY4Ni1wYy13aW5kb3dzLW1zdmMuemlwLnNoYTI1NikgfAp8IFt1di14ODZcXzY0LXBjLXdpbmRvd3MtbXN2Yy56aXBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE1L3V2LXg4NlxfNjQtcGMtd2luZG93cy1tc3ZjLnppcCkgfCB4NjQgV2luZG93cyB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYteDg2XF82NC1wYy13aW5kb3dzLW1zdmMuemlwLnNoYTI1NikgfAp8IFt1di1hYXJjaDY0LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYtYWFyY2g2NC11bmtub3duLWxpbnV4LWdudS50YXIuZ3opIHwgQVJNNjQgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE1L3V2LWFhcmNoNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1pNjg2LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYtaTY4Ni11bmtub3duLWxpbnV4LWdudS50YXIuZ3opIHwgeDg2IExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNS91di1pNjg2LXVua25vd24tbGludXgtZ251LnRhci5nei5zaGEyNTYpIHwKfCBbdXYtcG93ZXJwYzY0LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYtcG93ZXJwYzY0LXVua25vd24tbGludXgtZ251LnRhci5neikgfCBQUEM2NCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYtcG93ZXJwYzY0LXVua25vd24tbGludXgtZ251LnRhci5nei5zaGEyNTYpIHwKfCBbdXYtcG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNS91di1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudS50YXIuZ3opIHwgUFBDNjRMRSBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYtcG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1zMzkweC11bmtub3duLWxpbnV4LWdudS50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE1L3V2LXMzOTB4LXVua25vd24tbGludXgtZ251LnRhci5neikgfCBTMzkweCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYtczM5MHgtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di14ODZcXzY0LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYteDg2XF82NC11bmtub3duLWxpbnV4LWdudS50YXIuZ3opIHwgeDY0IExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNS91di14ODZcXzY0LXVua25vd24tbGludXgtZ251LnRhci5nei5zaGEyNTYpIHwKfCBbdXYtYXJtdjctdW5rbm93bi1saW51eC1nbnVlYWJpaGYudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNS91di1hcm12Ny11bmtub3duLWxpbnV4LWdudWVhYmloZi50YXIuZ3opIHwgQVJNdjcgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE1L3V2LWFybXY3LXVua25vd24tbGludXgtZ251ZWFiaWhmLnRhci5nei5zaGEyNTYpIHwKfCBbdXYtYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2wudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNS91di1hYXJjaDY0LXVua25vd24tbGludXgtbXVzbC50YXIuZ3opIHwgQVJNNjQgTVVTTCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYtYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2wudGFyLmd6LnNoYTI1NikgfAp8IFt1di1pNjg2LXVua25vd24tbGludXgtbXVzbC50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE1L3V2LWk2ODYtdW5rbm93bi1saW51eC1tdXNsLnRhci5neikgfCB4ODYgTVVTTCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYtaTY4Ni11bmtub3duLWxpbnV4LW11c2wudGFyLmd6LnNoYTI1NikgfAp8IFt1di14ODZcXzY0LXVua25vd24tbGludXgtbXVzbC50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE1L3V2LXg4NlxfNjQtdW5rbm93bi1saW51eC1tdXNsLnRhci5neikgfCB4NjQgTVVTTCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYteDg2XF82NC11bmtub3duLWxpbnV4LW11c2wudGFyLmd6LnNoYTI1NikgfAp8IFt1di1hcm0tdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYtYXJtLXVua25vd24tbGludXgtbXVzbGVhYmloZi50YXIuZ3opIHwgQVJNdjYgTVVTTCBMaW51eCAoSGFyZGZsb2F0KSB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYtYXJtLXVua25vd24tbGludXgtbXVzbGVhYmloZi50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LWFybXY3LXVua25vd24tbGludXgtbXVzbGVhYmloZi50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE1L3V2LWFybXY3LXVua25vd24tbGludXgtbXVzbGVhYmloZi50YXIuZ3opIHwgQVJNdjcgTVVTTCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTUvdXYtYXJtdjctdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5nei5zaGEyNTYpIHwKCiMjIyBbYHYwLjYuMTRgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL3RhZy8wLjYuMTQpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvY29tcGFyZS8wLjYuMTMuLi4wLjYuMTQpCgojIyMjIFJlbGVhc2UgTm90ZXMKCiMjIyMjIFB5dGhvbiB2ZXJzaW9ucwoKVGhlIGZvbGxvd2luZyBQeXRob24gdmVyc2lvbnMgaGF2ZSBiZWVuIGFkZGVkOgoKLSAgIENQeXRob24gMy4xMy4zCi0gICBDUHl0aG9uIDMuMTIuMTAKLSAgIENQeXRob24gMy4xMS4xMgotICAgQ1B5dGhvbiAzLjEwLjE3Ci0gICBDUHl0aG9uIDMuOS4yMgoKU2VlIHRoZSBbYHB5dGhvbi1idWlsZC1zdGFuZGFsb25lYCByZWxlYXNlIG5vdGVzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3B5dGhvbi1idWlsZC1zdGFuZGFsb25lL3JlbGVhc2VzL3RhZy8yMDI1MDQwOSkgZm9yIG1vcmUgZGV0YWlscy4KCiMjIyMjIEVuaGFuY2VtZW50cwoKLSAgIEFkZCBgdXYtYnVpbGRgIGFuZCBgdXZfYnVpbGRgIGFsaWFzZXMgdG8gYHV2IGluaXQgLS1idWlsZC1iYWNrZW5kYCAoWyMmIzgyMDM7MTI3NzZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjc3NikpCi0gICBFbWl0IGRlZGljYXRlZCBlcnJvciBtZXNzYWdlIGZvciBDb25kYSBgZW52aXJvbm1lbnQueW1sYCBmaWxlcyAoWyMmIzgyMDM7MTI2NjldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjY2OSkpCgojIyMjIyBQcmV2aWV3IGZlYXR1cmVzCgotICAgQnVpbGQgYmFja2VuZDogQ2hlY2sgbW9kdWxlIGRpciBleGlzdHMgZm9yIHNkaXN0IGJ1aWxkIChbIyYjODIwMzsxMjc3OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNzc5KSkKLSAgIEJ1aWxkIGJhY2tlbmQ6IEZpeCBzZGlzdCB3aXRoIGxvbmcgZGlyZWN0b3JpZXMgKFsjJiM4MjAzOzEyNzY0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI3NjQpKQoKIyMjIyMgUGVyZm9ybWFuY2UKCi0gICBBdm9pZCBxdWVyeWluZyBHaXRIdWIgb24gcmVwZWF0ZWQgaW5zdGFsbCBpbnZvY2F0aW9ucyAoWyMmIzgyMDM7MTI3NjddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjc2NykpCgojIyMjIyBCdWcgZml4ZXMKCi0gICBFcnJvciB3aGVuIGB0b29sLnV2LnNvdXJjZXNgIGlzIHNldCBpbiBzeXN0ZW0tbGV2ZWwgY29uZmlndXJhdGlvbiBmaWxlIChbIyYjODIwMzsxMjc1N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNzU3KSkKLSAgIFNwbGl0IHdvcmtzcGFjZSBtZW1iZXJzIG9udG8gdGhlaXIgb3duIGxpbmVzIGluIGB1diBpbml0YCAoWyMmIzgyMDM7MTI3NTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjc1NikpCgojIyMjIyBEb2N1bWVudGF0aW9uCgotICAgQWRkIGxvY2tmaWxlIG5vdGUgYWJvdXQgUEVQIDc1MSAoWyMmIzgyMDM7MTI3MzJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjczMikpCi0gICBFeHRlbmQgdGhlIHJlZmVyZW5jZSBkb2N1bWVudGF0aW9uIGZvciBgdXYgcGlwIHN5bmNgIChbIyYjODIwMzsxMjY4M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjgzKSkKLSAgIEZpeCBtaXNtYXRjaGVkIHBpcCBpbnRlcmZhY2UgaGVhZGVyIC8gbmF2IHRpdGxlcyAoWyMmIzgyMDM7MTI2NDBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjY0MCkpCgojIyMgdXYgMC42LjE0CgojIyMjIEluc3RhbGwgdXYgMC42LjE0CgojIyMjIyBJbnN0YWxsIHByZWJ1aWx0IGJpbmFyaWVzIHZpYSBzaGVsbCBzY3JpcHQKCmBgYHNoCmN1cmwgLS1wcm90byAnPWh0dHBzJyAtLXRsc3YxLjIgLUxzU2YgaHR0cHM6Ly9naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYtaW5zdGFsbGVyLnNoIHwgc2gKYGBgCgojIyMjIyBJbnN0YWxsIHByZWJ1aWx0IGJpbmFyaWVzIHZpYSBwb3dlcnNoZWxsIHNjcmlwdAoKYGBgc2gKcG93ZXJzaGVsbCAtRXhlY3V0aW9uUG9saWN5IEJ5cGFzcyAtYyAiaXJtIGh0dHBzOi8vZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE0L3V2LWluc3RhbGxlci5wczEgfCBpZXgiCmBgYAoKIyMjIyBEb3dubG9hZCB1diAwLjYuMTQKCnwgIEZpbGUgIHwgUGxhdGZvcm0gfCBDaGVja3N1bSB8CnwtLS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgW3V2LWFhcmNoNjQtYXBwbGUtZGFyd2luLnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYtYWFyY2g2NC1hcHBsZS1kYXJ3aW4udGFyLmd6KSB8IEFwcGxlIFNpbGljb24gbWFjT1MgfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE0L3V2LWFhcmNoNjQtYXBwbGUtZGFyd2luLnRhci5nei5zaGEyNTYpIHwKfCBbdXYteDg2XF82NC1hcHBsZS1kYXJ3aW4udGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNC91di14ODZcXzY0LWFwcGxlLWRhcndpbi50YXIuZ3opIHwgSW50ZWwgbWFjT1MgfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE0L3V2LXg4NlxfNjQtYXBwbGUtZGFyd2luLnRhci5nei5zaGEyNTYpIHwKfCBbdXYtYWFyY2g2NC1wYy13aW5kb3dzLW1zdmMuemlwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNC91di1hYXJjaDY0LXBjLXdpbmRvd3MtbXN2Yy56aXApIHwgQVJNNjQgV2luZG93cyB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYtYWFyY2g2NC1wYy13aW5kb3dzLW1zdmMuemlwLnNoYTI1NikgfAp8IFt1di1pNjg2LXBjLXdpbmRvd3MtbXN2Yy56aXBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE0L3V2LWk2ODYtcGMtd2luZG93cy1tc3ZjLnppcCkgfCB4ODYgV2luZG93cyB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYtaTY4Ni1wYy13aW5kb3dzLW1zdmMuemlwLnNoYTI1NikgfAp8IFt1di14ODZcXzY0LXBjLXdpbmRvd3MtbXN2Yy56aXBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE0L3V2LXg4NlxfNjQtcGMtd2luZG93cy1tc3ZjLnppcCkgfCB4NjQgV2luZG93cyB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYteDg2XF82NC1wYy13aW5kb3dzLW1zdmMuemlwLnNoYTI1NikgfAp8IFt1di1hYXJjaDY0LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYtYWFyY2g2NC11bmtub3duLWxpbnV4LWdudS50YXIuZ3opIHwgQVJNNjQgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE0L3V2LWFhcmNoNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1pNjg2LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYtaTY4Ni11bmtub3duLWxpbnV4LWdudS50YXIuZ3opIHwgeDg2IExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNC91di1pNjg2LXVua25vd24tbGludXgtZ251LnRhci5nei5zaGEyNTYpIHwKfCBbdXYtcG93ZXJwYzY0LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYtcG93ZXJwYzY0LXVua25vd24tbGludXgtZ251LnRhci5neikgfCBQUEM2NCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYtcG93ZXJwYzY0LXVua25vd24tbGludXgtZ251LnRhci5nei5zaGEyNTYpIHwKfCBbdXYtcG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNC91di1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudS50YXIuZ3opIHwgUFBDNjRMRSBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYtcG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1zMzkweC11bmtub3duLWxpbnV4LWdudS50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE0L3V2LXMzOTB4LXVua25vd24tbGludXgtZ251LnRhci5neikgfCBTMzkweCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYtczM5MHgtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di14ODZcXzY0LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYteDg2XF82NC11bmtub3duLWxpbnV4LWdudS50YXIuZ3opIHwgeDY0IExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNC91di14ODZcXzY0LXVua25vd24tbGludXgtZ251LnRhci5nei5zaGEyNTYpIHwKfCBbdXYtYXJtdjctdW5rbm93bi1saW51eC1nbnVlYWJpaGYudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNC91di1hcm12Ny11bmtub3duLWxpbnV4LWdudWVhYmloZi50YXIuZ3opIHwgQVJNdjcgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE0L3V2LWFybXY3LXVua25vd24tbGludXgtZ251ZWFiaWhmLnRhci5nei5zaGEyNTYpIHwKfCBbdXYtYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2wudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xNC91di1hYXJjaDY0LXVua25vd24tbGludXgtbXVzbC50YXIuZ3opIHwgQVJNNjQgTVVTTCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYtYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2wudGFyLmd6LnNoYTI1NikgfAp8IFt1di1pNjg2LXVua25vd24tbGludXgtbXVzbC50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE0L3V2LWk2ODYtdW5rbm93bi1saW51eC1tdXNsLnRhci5neikgfCB4ODYgTVVTTCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYtaTY4Ni11bmtub3duLWxpbnV4LW11c2wudGFyLmd6LnNoYTI1NikgfAp8IFt1di14ODZcXzY0LXVua25vd24tbGludXgtbXVzbC50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE0L3V2LXg4NlxfNjQtdW5rbm93bi1saW51eC1tdXNsLnRhci5neikgfCB4NjQgTVVTTCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYteDg2XF82NC11bmtub3duLWxpbnV4LW11c2wudGFyLmd6LnNoYTI1NikgfAp8IFt1di1hcm0tdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYtYXJtLXVua25vd24tbGludXgtbXVzbGVhYmloZi50YXIuZ3opIHwgQVJNdjYgTVVTTCBMaW51eCAoSGFyZGZsb2F0KSB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYtYXJtLXVua25vd24tbGludXgtbXVzbGVhYmloZi50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LWFybXY3LXVua25vd24tbGludXgtbXVzbGVhYmloZi50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjE0L3V2LWFybXY3LXVua25vd24tbGludXgtbXVzbGVhYmloZi50YXIuZ3opIHwgQVJNdjcgTVVTTCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTQvdXYtYXJtdjctdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5nei5zaGEyNTYpIHwKCiMjIyBbYHYwLjYuMTNgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL3RhZy8wLjYuMTMpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvY29tcGFyZS8wLjYuMTIuLi4wLjYuMTMpCgojIyMjIFJlbGVhc2UgTm90ZXMKCiMjIyMjIEVuaGFuY2VtZW50cwoKLSAgIEFkZCBgLS1zaG93LXZlcnNpb25gIHRvIGB1diBweXRob24gZmluZGAgKFsjJiM4MjAzOzEyMzc2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTIzNzYpKQotICAgUmVtb3ZlIGAtLW5vLWNvbmZpZ2Agd2FybmluZyBmcm9tIGB1diBwaXAgY29tcGlsZWAgYW5kIGB1diBwaXAgc3luY2AgKFsjJiM4MjAzOzEyNjQyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI2NDIpKQotICAgU2tpcCByZXBlYXRlZCBkaXJlY3RvcmllcyBpbiBgUEFUSGAgd2hlbiBzZWFyY2hpbmcgZm9yIFB5dGhvbiBpbnRlcnByZXRlcnMgKFsjJiM4MjAzOzEyMzY3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTIzNjcpKQotICAgVW5zZXQgYFNDUklQVF9QQVRIYCBpbiByZWxvY2F0YWJsZSBhY3RpdmF0aW9uIHNjcmlwdCAoWyMmIzgyMDM7MTI2NzJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjY3MikpCi0gICBBZGQgYFVWX1BZVEhPTl9ET1dOTE9BRFNfSlNPTl9VUkxgIHRvIHNldCBjdXN0b20gbWFuYWdlZCBweXRob24gc291cmNlcyAoWyMmIzgyMDM7MTA5MzldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMDkzOSkpCi0gICBSZWplY3QgYHB5cHJvamVjdC50b21sYCBmaWxlcyBpbiBgdXYgcGlwIGNvbXBpbGUgLW9gIChbIyYjODIwMzsxMjY3M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjczKSkKLSAgIFJlc3BlY3QgdGhlIGAtLW9mZmxpbmVgIGZsYWcgZm9yIEdpdCBvcGVyYXRpb25zIChbIyYjODIwMzsxMjYxOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjE5KSkKCiMjIyMjIEJ1ZyBmaXhlcwoKLSAgIFdhcm4gaW5zdGVhZCBvZiBlcnJvciBpZiBDUkMgYXBwZWFycyB0byBiZSBtaXNzaW5nIChbIyYjODIwMzsxMjcyMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNzIyKSkKLSAgIEF2b2lkIGluZmluaXRlIGxvb3AgaW4gYHV2IGV4cG9ydGAgd2l0aCBjb25mbGljdHMgKFsjJiM4MjAzOzEyNzI2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI3MjYpKQoKIyMjIyMgUnVzdCBBUEkKCi0gICBVcGRhdGUgTVNSViB0byAxLjg0IChbIyYjODIwMzsxMjY3MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjcwKSkKCiMjIyB1diAwLjYuMTMKCiMjIyMgSW5zdGFsbCB1diAwLjYuMTMKCiMjIyMjIEluc3RhbGwgcHJlYnVpbHQgYmluYXJpZXMgdmlhIHNoZWxsIHNjcmlwdAoKYGBgc2gKY3VybCAtLXByb3RvICc9aHR0cHMnIC0tdGxzdjEuMiAtTHNTZiBodHRwczovL2dpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di1pbnN0YWxsZXIuc2ggfCBzaApgYGAKCiMjIyMjIEluc3RhbGwgcHJlYnVpbHQgYmluYXJpZXMgdmlhIHBvd2Vyc2hlbGwgc2NyaXB0CgpgYGBzaApwb3dlcnNoZWxsIC1FeGVjdXRpb25Qb2xpY3kgQnlwYXNzIC1jICJpcm0gaHR0cHM6Ly9naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTMvdXYtaW5zdGFsbGVyLnBzMSB8IGlleCIKYGBgCgojIyMjIERvd25sb2FkIHV2IDAuNi4xMwoKfCAgRmlsZSAgfCBQbGF0Zm9ybSB8IENoZWNrc3VtIHwKfC0tLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLXwKfCBbdXYtYWFyY2g2NC1hcHBsZS1kYXJ3aW4udGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di1hYXJjaDY0LWFwcGxlLWRhcndpbi50YXIuZ3opIHwgQXBwbGUgU2lsaWNvbiBtYWNPUyB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTMvdXYtYWFyY2g2NC1hcHBsZS1kYXJ3aW4udGFyLmd6LnNoYTI1NikgfAp8IFt1di14ODZcXzY0LWFwcGxlLWRhcndpbi50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjEzL3V2LXg4NlxfNjQtYXBwbGUtZGFyd2luLnRhci5neikgfCBJbnRlbCBtYWNPUyB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTMvdXYteDg2XF82NC1hcHBsZS1kYXJ3aW4udGFyLmd6LnNoYTI1NikgfAp8IFt1di1hYXJjaDY0LXBjLXdpbmRvd3MtbXN2Yy56aXBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjEzL3V2LWFhcmNoNjQtcGMtd2luZG93cy1tc3ZjLnppcCkgfCBBUk02NCBXaW5kb3dzIHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di1hYXJjaDY0LXBjLXdpbmRvd3MtbXN2Yy56aXAuc2hhMjU2KSB8CnwgW3V2LWk2ODYtcGMtd2luZG93cy1tc3ZjLnppcF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTMvdXYtaTY4Ni1wYy13aW5kb3dzLW1zdmMuemlwKSB8IHg4NiBXaW5kb3dzIHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di1pNjg2LXBjLXdpbmRvd3MtbXN2Yy56aXAuc2hhMjU2KSB8CnwgW3V2LXg4NlxfNjQtcGMtd2luZG93cy1tc3ZjLnppcF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTMvdXYteDg2XF82NC1wYy13aW5kb3dzLW1zdmMuemlwKSB8IHg2NCBXaW5kb3dzIHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di14ODZcXzY0LXBjLXdpbmRvd3MtbXN2Yy56aXAuc2hhMjU2KSB8CnwgW3V2LWFhcmNoNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di1hYXJjaDY0LXVua25vd24tbGludXgtZ251LnRhci5neikgfCBBUk02NCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTMvdXYtYWFyY2g2NC11bmtub3duLWxpbnV4LWdudS50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LWk2ODYtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di1pNjg2LXVua25vd24tbGludXgtZ251LnRhci5neikgfCB4ODYgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjEzL3V2LWk2ODYtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6KSB8IFBQQzY0IExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudS50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjEzL3V2LXBvd2VycGM2NGxlLXVua25vd24tbGludXgtZ251LnRhci5neikgfCBQUEM2NExFIExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudS50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LXMzOTB4LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTMvdXYtczM5MHgtdW5rbm93bi1saW51eC1nbnUudGFyLmd6KSB8IFMzOTB4IExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di1zMzkweC11bmtub3duLWxpbnV4LWdudS50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LXg4NlxfNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di14ODZcXzY0LXVua25vd24tbGludXgtZ251LnRhci5neikgfCB4NjQgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjEzL3V2LXg4NlxfNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1hcm12Ny11bmtub3duLWxpbnV4LWdudWVhYmloZi50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjEzL3V2LWFybXY3LXVua25vd24tbGludXgtZ251ZWFiaWhmLnRhci5neikgfCBBUk12NyBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTMvdXYtYXJtdjctdW5rbm93bi1saW51eC1nbnVlYWJpaGYudGFyLmd6LnNoYTI1NikgfAp8IFt1di1hYXJjaDY0LXVua25vd24tbGludXgtbXVzbC50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjEzL3V2LWFhcmNoNjQtdW5rbm93bi1saW51eC1tdXNsLnRhci5neikgfCBBUk02NCBNVVNMIExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di1hYXJjaDY0LXVua25vd24tbGludXgtbXVzbC50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LWk2ODYtdW5rbm93bi1saW51eC1tdXNsLnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTMvdXYtaTY4Ni11bmtub3duLWxpbnV4LW11c2wudGFyLmd6KSB8IHg4NiBNVVNMIExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di1pNjg2LXVua25vd24tbGludXgtbXVzbC50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LXg4NlxfNjQtdW5rbm93bi1saW51eC1tdXNsLnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTMvdXYteDg2XF82NC11bmtub3duLWxpbnV4LW11c2wudGFyLmd6KSB8IHg2NCBNVVNMIExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di14ODZcXzY0LXVua25vd24tbGludXgtbXVzbC50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LWFybS11bmtub3duLWxpbnV4LW11c2xlYWJpaGYudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di1hcm0tdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5neikgfCBBUk12NiBNVVNMIExpbnV4IChIYXJkZmxvYXQpIHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di1hcm0tdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5nei5zaGEyNTYpIHwKfCBbdXYtYXJtdjctdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTMvdXYtYXJtdjctdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5neikgfCBBUk12NyBNVVNMIExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMy91di1hcm12Ny11bmtub3duLWxpbnV4LW11c2xlYWJpaGYudGFyLmd6LnNoYTI1NikgfAoKIyMjIFtgdjAuNi4xMmBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvdGFnLzAuNi4xMikKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9jb21wYXJlLzAuNi4xMS4uLjAuNi4xMikKCiMjIyMgUmVsZWFzZSBOb3RlcwoKIyMjIyMgRW5oYW5jZW1lbnRzCgotICAgUmVwb3J0IHRoZSBxdWVyaWVkIGV4ZWN1dGFibGUgcGF0aCBpbiBgdXYgcHl0aG9uIGxpc3RgIChbIyYjODIwMzsxMjYyOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjI4KSkKLSAgIEltcHJvdmUgYXJjaGl2ZSB1bnBhY2sgZXJyb3IgbWVzc2FnZXMgKFsjJiM4MjAzOzEyNjI3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI2MjcpKQoKIyMjIyMgQnVnIGZpeGVzCgotICAgUmVzcGVjdCBgYXV0aGVudGljYXRlYCB3aGVuIHVzaW5nIGBleHBsaWNpdCA9IHRydWVgIChbIyYjODIwMzsxMjYzMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjMxKSkKLSAgIE5vcm1hbGl6ZSBleHRyYSBhbmQgZ3JvdXAgbmFtZXMgaW4gYHV2IGFkZGAgYW5kIGB1diByZW1vdmVgIChbIyYjODIwMzsxMjU4Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNTg2KSkKLSAgIEVuZm9yY2UgQ1JDLTMyIGNoZWNrcyB3aGVuIHVucGFja2luZyBhcmNoaXZlcyAoWyMmIzgyMDM7MTI2MjNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjYyMykpCi0gICBGaXggcGFyc2luZyBvZiBgcHl0aG9uLXBsYXRmb3JtYCBpbiBzZXR0aW5ncyBmaWxlcyAoWyMmIzgyMDM7MTI1OTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjU5MikpCgojIyMjIyBEb2N1bWVudGF0aW9uCgotICAgQWRkIG5vdGUgYWJvdXQgYHV2IGJ1aWxkYCB0byBgcGFja2FnZSA9IGZhbHNlYCAoWyMmIzgyMDM7MTI2MDhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjYwOCkpCi0gICBBZGQgaW5kZXggZmFsbGJhY2sgbm90ZSB0byBgYXV0aGVudGljYXRlID0gYWx3YXlzYCBkb2N1bWVudGF0aW9uIChbIyYjODIwMzsxMjQ5OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNDk4KSkKLSAgIEZpeCBpbnZhbGlkICdraW5kJyByZWZlcmVuY2UgaW4gZmxhdCBpbmRleCBkb2NzIChbIyYjODIwMzsxMjU4M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNTgzKSkKCiMjIyB1diAwLjYuMTIKCiMjIyMgSW5zdGFsbCB1diAwLjYuMTIKCiMjIyMjIEluc3RhbGwgcHJlYnVpbHQgYmluYXJpZXMgdmlhIHNoZWxsIHNjcmlwdAoKYGBgc2gKY3VybCAtLXByb3RvICc9aHR0cHMnIC0tdGxzdjEuMiAtTHNTZiBodHRwczovL2dpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMi91di1pbnN0YWxsZXIuc2ggfCBzaApgYGAKCiMjIyMjIEluc3RhbGwgcHJlYnVpbHQgYmluYXJpZXMgdmlhIHBvd2Vyc2hlbGwgc2NyaXB0CgpgYGBzaApwb3dlcnNoZWxsIC1FeGVjdXRpb25Qb2xpY3kgQnlwYXNzIC1jICJpcm0gaHR0cHM6Ly9naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTIvdXYtaW5zdGFsbGVyLnBzMSB8IGlleCIKYGBgCgojIyMjIERvd25sb2FkIHV2IDAuNi4xMgoKfCAgRmlsZSAgfCBQbGF0Zm9ybSB8IENoZWNrc3VtIHwKfC0tLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLXwKfCBbdXYtYWFyY2g2NC1hcHBsZS1kYXJ3aW4udGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMi91di1hYXJjaDY0LWFwcGxlLWRhcndpbi50YXIuZ3opIHwgQXBwbGUgU2lsaWNvbiBtYWNPUyB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTIvdXYtYWFyY2g2NC1hcHBsZS1kYXJ3aW4udGFyLmd6LnNoYTI1NikgfAp8IFt1di14ODZcXzY0LWFwcGxlLWRhcndpbi50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjEyL3V2LXg4NlxfNjQtYXBwbGUtZGFyd2luLnRhci5neikgfCBJbnRlbCBtYWNPUyB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTIvdXYteDg2XF82NC1hcHBsZS1kYXJ3aW4udGFyLmd6LnNoYTI1NikgfAp8IFt1di1hYXJjaDY0LXBjLXdpbmRvd3MtbXN2Yy56aXBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjEyL3V2LWFhcmNoNjQtcGMtd2luZG93cy1tc3ZjLnppcCkgfCBBUk02NCBXaW5kb3dzIHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMi91di1hYXJjaDY0LXBjLXdpbmRvd3MtbXN2Yy56aXAuc2hhMjU2KSB8CnwgW3V2LWk2ODYtcGMtd2luZG93cy1tc3ZjLnppcF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTIvdXYtaTY4Ni1wYy13aW5kb3dzLW1zdmMuemlwKSB8IHg4NiBXaW5kb3dzIHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMi91di1pNjg2LXBjLXdpbmRvd3MtbXN2Yy56aXAuc2hhMjU2KSB8CnwgW3V2LXg4NlxfNjQtcGMtd2luZG93cy1tc3ZjLnppcF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTIvdXYteDg2XF82NC1wYy13aW5kb3dzLW1zdmMuemlwKSB8IHg2NCBXaW5kb3dzIHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMi91di14ODZcXzY0LXBjLXdpbmRvd3MtbXN2Yy56aXAuc2hhMjU2KSB8CnwgW3V2LWFhcmNoNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMi91di1hYXJjaDY0LXVua25vd24tbGludXgtZ251LnRhci5neikgfCBBUk02NCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTIvdXYtYWFyY2g2NC11bmtub3duLWxpbnV4LWdudS50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LWk2ODYtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMi91di1pNjg2LXVua25vd24tbGludXgtZ251LnRhci5neikgfCB4ODYgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjEyL3V2LWk2ODYtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMi91di1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6KSB8IFBQQzY0IExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMi91di1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudS50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjEyL3V2LXBvd2VycGM2NGxlLXVua25vd24tbGludXgtZ251LnRhci5neikgfCBQUEM2NExFIExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMi91di1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudS50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LXMzOTB4LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTIvdXYtczM5MHgtdW5rbm93bi1saW51eC1nbnUudGFyLmd6KSB8IFMzOTB4IExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMi91di1zMzkweC11bmtub3duLWxpbnV4LWdudS50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LXg4NlxfNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMi91di14ODZcXzY0LXVua25vd24tbGludXgtZ251LnRhci5neikgfCB4NjQgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjEyL3V2LXg4NlxfNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1hcm12Ny11bmtub3duLWxpbnV4LWdudWVhYmloZi50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjEyL3V2LWFybXY3LXVua25vd24tbGludXgtZ251ZWFiaWhmLnRhci5neikgfCBBUk12NyBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjYuMTIvdXYtYXJtdjctdW5rbm93bi1saW51eC1nbnVlYWJpaGYudGFyLmd6LnNoYTI1NikgfAp8IFt1di1hYXJjaDY0LXVua25vd24tbGludXgtbXVzbC50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC42LjEyL3V2LWFhcmNoNjQtdW5rbm93bi1saW51eC1tdXNsLnRhci5neikgfCBBUk02NCBNVVNMIExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNi4xMi91di1hYXJjaDY0LXVua25vd24tbGludXgtbXVzbC50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LWk2ODYtdQoKPC9kZXRhaWxzPgoKLS0tCgojIyMgQ29uZmlndXJhdGlvbgoK8J+ThSAqKlNjaGVkdWxlKio6IEJyYW5jaCBjcmVhdGlvbiAtIEF0IGFueSB0aW1lIChubyBzY2hlZHVsZSBkZWZpbmVkKSwgQXV0b21lcmdlIC0gQXQgYW55IHRpbWUgKG5vIHNjaGVkdWxlIGRlZmluZWQpLgoK8J+apiAqKkF1dG9tZXJnZSoqOiBEaXNhYmxlZCBieSBjb25maWcuIFBsZWFzZSBtZXJnZSB0aGlzIG1hbnVhbGx5IG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQuCgrimbsgKipSZWJhc2luZyoqOiBXaGVuZXZlciBQUiBiZWNvbWVzIGNvbmZsaWN0ZWQsIG9yIHlvdSB0aWNrIHRoZSByZWJhc2UvcmV0cnkgY2hlY2tib3guCgrwn5G7ICoqSW1tb3J0YWwqKjogVGhpcyBQUiB3aWxsIGJlIHJlY3JlYXRlZCBpZiBjbG9zZWQgdW5tZXJnZWQuIEdldCBbY29uZmlnIGhlbHBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9yZW5vdmF0ZWJvdC9yZW5vdmF0ZS9kaXNjdXNzaW9ucykgaWYgdGhhdCdzIHVuZGVzaXJlZC4KCi0tLQoKIC0gWyBdIDwhLS0gcmViYXNlLWNoZWNrIC0tPklmIHlvdSB3YW50IHRvIHJlYmFzZS9yZXRyeSB0aGlzIFBSLCBjaGVjayB0aGlzIGJveAoKLS0tCgpUaGlzIFBSIHdhcyBnZW5lcmF0ZWQgYnkgW01lbmQgUmVub3ZhdGVdKGh0dHBzOi8vbWVuZC5pby9yZW5vdmF0ZS8pLiBWaWV3IHRoZSBbcmVwb3NpdG9yeSBqb2IgbG9nXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2dpdGh1Yi9vc2lzbS9jb250YWluZXItaW1hZ2VzKS4KPCEtLXJlbm92YXRlLWRlYnVnOmV5SmpjbVZoZEdWa1NXNVdaWElpT2lJek9TNHlNRGN1TVNJc0luVndaR0YwWldSSmJsWmxjaUk2SWpNNUxqSTJOQzR3SWl3aWRHRnlaMlYwUW5KaGJtTm9Jam9pYldGcGJpSXNJbXhoWW1Wc2N5STZXeUp5Wlc1dmRtRjBaU0pkZlE9PS0tPgo=
      patchset: af26b9719ed2c11ecdf8f53379f91cc3c4d880c1
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: fa94074a33c2a4b1ff3eaadb063e1f29046bf671
          trusted/project_1/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: 34ae850a7303da5bb21907d41439ae6afbc1fe3e
          untrusted/project_0/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 12f7f78c76470b3998d356b9a12d3aed597b20f8
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: fa94074a33c2a4b1ff3eaadb063e1f29046bf671
          untrusted/project_2/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: 34ae850a7303da5bb21907d41439ae6afbc1fe3e
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/yamllint/run.yaml
          roles:
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_0/zuul-jobs
            link_target: untrusted/project_0/github.com/osism/zuul-jobs
            role_path: ansible/playbook_0/role_0/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_1/zuul-config
            link_target: untrusted/project_1/github.com/osism/zuul-config
            role_path: ansible/playbook_0/role_1/zuul-config/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_2/zuul-jobs
            link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs
            role_path: ansible/playbook_0/role_2/zuul-jobs/roles
      post_review: false
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/container-images
        name: osism/container-images
        short_name: container-images
        src_dir: src/github.com/osism/container-images
      projects:
        github.com/osism/container-images:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-images
          checkout: main
          checkout_description: zuul branch
          commit: d5b0f9a004b5ea03f8dd5510d4bd00e75ca075f8
          name: osism/container-images
          required: false
          short_name: container-images
          src_dir: src/github.com/osism/container-images
      ref: refs/pull/709/head
      resources: {}
      tenant: osism
      timeout: 1800
      voting: true
