all:
  children:
    tempest:
      hosts:
        controller: null
    zuul_unreachable:
      hosts: {}
  hosts:
    controller:
      ansible_connection: ssh
      ansible_host: 199.204.45.23
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      configure_swap_size: 8192
      devstack_local_conf:
        post-config:
          $NEUTRON_CONF:
            DEFAULT:
              global_physnet_mtu: '{{ external_bridge_mtu }}'
          /etc/magnum/magnum.conf:
            cluster_template:
              kubernetes_allowed_network_drivers: calico,cilium
              kubernetes_default_network_driver: calico
            nova_client:
              api_version: 2.15
          /etc/manila/manila.conf:
            generic:
              connect_share_server_to_tenant_network: true
              driver_handles_share_servers: true
      devstack_localrc:
        ADMIN_PASSWORD: secretadmin
        DATABASE_PASSWORD: secretdatabase
        DEBUG_LIBVIRT_COREDUMPS: true
        DISABLE_AMP_IMAGE_BUILD: true
        ENABLE_SYSCTL_MEM_TUNING: true
        ENABLE_SYSCTL_NET_TUNING: true
        ENABLE_ZSWAP: true
        ERROR_ON_CLONE: true
        FIXED_RANGE: 10.1.0.0/20
        FLOATING_RANGE: 172.24.5.0/24
        GIT_BASE: https://github.com
        HOST_IP: '{{ hostvars[''controller''][''nodepool''][''private_ipv4''] }}'
        IPV4_ADDRS_SAFE_TO_USE: 10.1.0.0/20
        LIBVIRT_TYPE: '{{ devstack_libvirt_type | default("qemu") }}'
        LOGFILE: /opt/stack/logs/devstacklog.txt
        LOG_COLOR: false
        MAGNUM_GUEST_IMAGE_URL: '{{ image_url }}'
        MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS: snapshot_support=True create_share_from_snapshot_support=True
        MANILA_ENABLED_BACKENDS: generic
        MANILA_USE_SERVICE_INSTANCE_PASSWORD: true
        NETWORK_GATEWAY: 10.1.0.1
        NOVA_LIBVIRT_TB_CACHE_SIZE: 128
        NOVA_VNC_ENABLED: true
        OCTAVIA_NODE: api
        OVN_DBS_LOG_LEVEL: dbg
        PUBLIC_BRIDGE_MTU: '{{ external_bridge_mtu }}'
        PUBLIC_NETWORK_GATEWAY: 172.24.5.1
        RABBIT_PASSWORD: secretrabbit
        SERVICE_HOST: '{{ hostvars[''controller''][''nodepool''][''private_ipv4'']
          }}'
        SERVICE_PASSWORD: secretservice
        SWIFT_HASH: 1234123412341234
        SWIFT_REPLICAS: 1
        SWIFT_START_ALL_SERVICES: false
        VERBOSE: true
        VERBOSE_NO_TIMESTAMP: true
      devstack_plugins:
        barbican: https://github.com/openstack/barbican
        magnum: https://review.opendev.org/openstack/magnum
        magnum-cluster-api: https://github.com/vexxhost/magnum-cluster-api
        manila: https://github.com/openstack/manila
        octavia: https://github.com/openstack/octavia
        ovn-octavia-provider: https://github.com/openstack/ovn-octavia-provider
      devstack_services:
        base: false
        c-api: true
        c-bak: true
        c-sch: true
        c-vol: true
        dstat: false
        etcd3: true
        file_tracker: true
        g-api: true
        horizon: false
        key: true
        memory_tracker: true
        mysql: true
        n-api: true
        n-api-meta: true
        n-cond: true
        n-cpu: true
        n-novnc: true
        n-sch: true
        o-api: true
        o-da: true
        o-hk: true
        octavia: true
        openstack-cli-server: true
        ovn-controller: true
        ovn-northd: true
        ovs-vswitchd: true
        ovsdb-server: true
        placement-api: true
        q-ovn-agent: true
        q-svc: true
        rabbit: true
        s-account: false
        s-container: false
        s-object: false
        s-proxy: false
        tempest: false
        tls-proxy: true
      extensions_to_txt:
        auto: true
        conf: true
        localrc: true
        log: true
        stackenv: true
      image_release: 2026.05-7
      image_url: https://github.com/vexxhost/capo-image-elements/releases/download/{{
        image_release }}/ubuntu-22.04-{{ kube_tag }}.qcow2
      kube_tag: v1.33.12
      network_driver: calico
      nodepool:
        az: nova
        cloud: public
        external_id: 0e66acf0-8d55-47a4-bb24-98fd179f126c
        host_id: 413ad91e6120ae81306de27e59dcefd40ab96f06b8665fea7030ef8f
        interface_ip: 199.204.45.23
        label: ubuntu-noble-16
        node_properties: {}
        private_ipv4: 199.204.45.23
        private_ipv6: null
        provider: yul1
        public_ipv4: 199.204.45.23
        public_ipv6: 2604:e100:1:0:f816:3eff:fe70:6838
        region: ca-ymq-1
        slot: null
      zuul_copy_output:
        /etc/ceph: logs
        /etc/glusterfs/glusterd.vol: logs
        /etc/libvirt: logs
        /etc/lvm: logs
        /etc/resolv.conf: logs
        /etc/sudoers: logs
        /etc/sudoers.d: logs
        /var/log/ceph: logs
        /var/log/glusterfs: logs
        /var/log/libvirt: logs
        /var/log/mysql: logs
        /var/log/openvswitch: logs
        /var/log/postgresql: logs
        /var/log/rabbitmq: logs
        /var/log/unbound.log: logs
        '{{ devstack_conf_dir }}/.localrc.auto': logs
        '{{ devstack_conf_dir }}/.stackenv': logs
        '{{ devstack_conf_dir }}/local.conf': logs
        '{{ devstack_conf_dir }}/localrc': logs
        '{{ devstack_full_log}}': logs
        '{{ devstack_log_dir }}/atop': logs
        '{{ devstack_log_dir }}/devstacklog.txt': logs
        '{{ devstack_log_dir }}/devstacklog.txt.summary': logs
        '{{ devstack_log_dir }}/dstat-csv.log': logs
        '{{ devstack_log_dir }}/qemu.coredump': logs
        '{{ devstack_log_dir }}/tcpdump.pcap': logs
        '{{ devstack_log_dir }}/worlddump-latest.txt': logs
        '{{ stage_dir }}/apache': logs
        '{{ stage_dir }}/apache_config': logs
        '{{ stage_dir }}/audit.log': logs
        '{{ stage_dir }}/core': logs
        '{{ stage_dir }}/deprecations.log': logs
        '{{ stage_dir }}/df.txt': logs
        '{{ stage_dir }}/dpkg-l.txt': logs
        '{{ stage_dir }}/etc': logs
        '{{ stage_dir }}/iptables.txt': logs
        '{{ stage_dir }}/listen53.txt': logs
        '{{ stage_dir }}/mount.txt': logs
        '{{ stage_dir }}/performance.json': logs
        '{{ stage_dir }}/pip2-freeze.txt': logs
        '{{ stage_dir }}/pip3-freeze.txt': logs
        '{{ stage_dir }}/rpm-qa.txt': logs
        '{{ stage_dir }}/services.txt': logs
        '{{ stage_dir }}/verify_tempest_conf.log': logs
      zuul_node:
        az: nova
        cloud: public
        external_id: 0e66acf0-8d55-47a4-bb24-98fd179f126c
        host_id: 413ad91e6120ae81306de27e59dcefd40ab96f06b8665fea7030ef8f
        interface_ip: 199.204.45.23
        label: ubuntu-noble-16
        node_properties: {}
        private_ipv4: 199.204.45.23
        private_ipv6: null
        provider: yul1
        public_ipv4: 199.204.45.23
        public_ipv6: 2604:e100:1:0:f816:3eff:fe70:6838
        region: ca-ymq-1
        slot: null
        uuid: null
  vars:
    configure_swap_size: 8192
    devstack_local_conf:
      post-config:
        $NEUTRON_CONF:
          DEFAULT:
            global_physnet_mtu: '{{ external_bridge_mtu }}'
        /etc/magnum/magnum.conf:
          cluster_template:
            kubernetes_allowed_network_drivers: calico,cilium
            kubernetes_default_network_driver: calico
          nova_client:
            api_version: 2.15
        /etc/manila/manila.conf:
          generic:
            connect_share_server_to_tenant_network: true
            driver_handles_share_servers: true
    devstack_localrc:
      ADMIN_PASSWORD: secretadmin
      DATABASE_PASSWORD: secretdatabase
      DEBUG_LIBVIRT_COREDUMPS: true
      DISABLE_AMP_IMAGE_BUILD: true
      ENABLE_SYSCTL_MEM_TUNING: true
      ENABLE_SYSCTL_NET_TUNING: true
      ENABLE_ZSWAP: true
      ERROR_ON_CLONE: true
      FIXED_RANGE: 10.1.0.0/20
      FLOATING_RANGE: 172.24.5.0/24
      GIT_BASE: https://github.com
      HOST_IP: '{{ hostvars[''controller''][''nodepool''][''private_ipv4''] }}'
      IPV4_ADDRS_SAFE_TO_USE: 10.1.0.0/20
      LIBVIRT_TYPE: '{{ devstack_libvirt_type | default("qemu") }}'
      LOGFILE: /opt/stack/logs/devstacklog.txt
      LOG_COLOR: false
      MAGNUM_GUEST_IMAGE_URL: '{{ image_url }}'
      MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS: snapshot_support=True create_share_from_snapshot_support=True
      MANILA_ENABLED_BACKENDS: generic
      MANILA_USE_SERVICE_INSTANCE_PASSWORD: true
      NETWORK_GATEWAY: 10.1.0.1
      NOVA_LIBVIRT_TB_CACHE_SIZE: 128
      NOVA_VNC_ENABLED: true
      OCTAVIA_NODE: api
      OVN_DBS_LOG_LEVEL: dbg
      PUBLIC_BRIDGE_MTU: '{{ external_bridge_mtu }}'
      PUBLIC_NETWORK_GATEWAY: 172.24.5.1
      RABBIT_PASSWORD: secretrabbit
      SERVICE_HOST: '{{ hostvars[''controller''][''nodepool''][''private_ipv4''] }}'
      SERVICE_PASSWORD: secretservice
      SWIFT_HASH: 1234123412341234
      SWIFT_REPLICAS: 1
      SWIFT_START_ALL_SERVICES: false
      VERBOSE: true
      VERBOSE_NO_TIMESTAMP: true
    devstack_plugins:
      barbican: https://github.com/openstack/barbican
      magnum: https://review.opendev.org/openstack/magnum
      magnum-cluster-api: https://github.com/vexxhost/magnum-cluster-api
      manila: https://github.com/openstack/manila
      octavia: https://github.com/openstack/octavia
      ovn-octavia-provider: https://github.com/openstack/ovn-octavia-provider
    devstack_services:
      base: false
      c-api: true
      c-bak: true
      c-sch: true
      c-vol: true
      dstat: false
      etcd3: true
      file_tracker: true
      g-api: true
      horizon: false
      key: true
      memory_tracker: true
      mysql: true
      n-api: true
      n-api-meta: true
      n-cond: true
      n-cpu: true
      n-novnc: true
      n-sch: true
      o-api: true
      o-da: true
      o-hk: true
      octavia: true
      openstack-cli-server: true
      ovn-controller: true
      ovn-northd: true
      ovs-vswitchd: true
      ovsdb-server: true
      placement-api: true
      q-ovn-agent: true
      q-svc: true
      rabbit: true
      s-account: false
      s-container: false
      s-object: false
      s-proxy: false
      tempest: false
      tls-proxy: true
    extensions_to_txt:
      auto: true
      conf: true
      localrc: true
      log: true
      stackenv: true
    image_release: 2026.05-7
    image_url: https://github.com/vexxhost/capo-image-elements/releases/download/{{
      image_release }}/ubuntu-22.04-{{ kube_tag }}.qcow2
    kube_tag: v1.33.12
    network_driver: calico
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/zuul-config/zuul.d/jobs.yaml@main#1>'
      - '<Job openstack-multinode-fips explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/zuul-config/zuul.d/jobs.yaml@main#17>'
      - '<Job devstack-base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: openstack/devstack/.zuul.yaml@master#368>'
      - '<Job devstack-minimal explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: openstack/devstack/.zuul.yaml@master#502>'
      - '<Job devstack explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: openstack/devstack/.zuul.yaml@master#545>'
      - '<Job magnum-cluster-api-devstack explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/magnum-cluster-api/zuul.d/jobs.yaml@main#1>'
      - '<Job magnum-cluster-api-hydrophone explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/magnum-cluster-api/zuul.d/hydrophone-jobs.yaml@main#23>'
      - '<Job magnum-cluster-api-hydrophone-v1.33.12 explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/magnum-cluster-api/zuul.d/hydrophone-jobs.yaml@main#34>'
      - '<Job magnum-cluster-api-hydrophone-v1.33.12-calico explicit: None implied:
        {MatchAny:{ImpliedBranchMatcher:main}} source: vexxhost/magnum-cluster-api/zuul.d/hydrophone-jobs.yaml@main#40>'
      - '<Job magnum-cluster-api-hydrophone-v1.33.12-calico explicit: None implied:
        None source: vexxhost/magnum-cluster-api/zuul.d/hydrophone-jobs.yaml@main#1>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 2450c322d11e4155a83f4faf13d4bfed
      build_refs:
      - branch: main
        change: '1067'
        change_message: "fix(deps): update rust crate pyo3 to 0.29.0 [security]\n\nThis
          PR contains the following updates:\n\n| Package | Type | Update | Change
          |\n|---|---|---|---|\n| [pyo3](https://redirect.github.com/pyo3/pyo3) |
          dependencies | minor | `0.28.0` \u2192 `0.29.0` |\n\n---\n\n### PyO3 has
          an Out-of-bounds Read in `nth` / `nth_back` for `PyList` and `PyTuple` iterators\n[GHSA-36hh-v3qg-5jq4](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)\n\n<details>\n<summary>More
          information</summary>\n\n#### Details\nPyO3 0.24.0 added optimized implementations
          of `Iterator::nth` and `DoubleEndedIterator::nth_back` for the `BoundListIterator`
          and `BoundTupleIterator` types. These implementations computed the target
          index using unchecked `usize` addition (`index + n`) before bounds-checking
          against the sequence length, then read the element via `get_item_unchecked`.\n\nIn
          `nth` methods, a sufficiently large `n` (combined with a non-zero internal
          index) could cause the addition to overflow and wrap around, producing a
          small \"target index\" that passed the bounds check and enabling reads at
          the front of the `list` or `tuple` of elements previously yielded by the
          iterator.\n\nIn `nth_back` methods, a sufficiently large `n` could cause
          underflow in a similar fashion, however would instead allow reads of arbitrary
          memory past the end of the `list` or `tuple` storage.\n\n#### Severity\n-
          CVSS Score: 8.7 / 10 (High)\n- Vector String: `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N`\n\n####
          References\n- [https://github.com/PyO3/pyo3/pull/6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          [https://rustsec.org/advisories/RUSTSEC-2026-0176.html](https://rustsec.org/advisories/RUSTSEC-2026-0176.html)\n-
          [https://github.com/advisories/GHSA-36hh-v3qg-5jq4](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)\n\nThis
          data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)
          ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n</details>\n\n---\n\n###
          PyO3 has a missing `Sync` bound on `PyCFunction::new_closure` closures\n[GHSA-chgr-c6px-7xpp](https://redirect.github.com/advisories/GHSA-chgr-c6px-7xpp)\n\n<details>\n<summary>More
          information</summary>\n\n#### Details\n`PyCFunction::new_closure` (and the
          temporary `new_closure_bound` complement in the 0.21\u20130.22 series) required
          the supplied closure to be `Send + 'static` but not `Sync`. The resulting
          `PyCFunction` is a Python callable that can be invoked from any Python thread,
          which means the closure may be called concurrently from multiple threads,
          and needs a `Sync` bound to prevent possible data races.\n\nThe problem
          exists under all Python versions but is particularly vulnerable under the
          newer free-threaded Python variant, which do not have serial execution imposed
          by the Global Interpreter Lock. Under releases protected by the GIL, the
          ability to \"detach\" from the Python interpreter temporarily inside the
          closure (e.g. by `Python::detach`) makes it possible for interleaved and/or
          concurrent execution of various portions of the closure.\n\nPyO3 0.29.0
          added a `Sync` bound to close this thread-safety bug.\n\n#### Severity\n-
          CVSS Score: 6.3 / 10 (Medium)\n- Vector String: `CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N`\n\n####
          References\n- [https://github.com/PyO3/pyo3/pull/6096](https://redirect.github.com/PyO3/pyo3/pull/6096)\n-
          [https://github.com/PyO3/pyo3/releases/tag/v0.29.0](https://redirect.github.com/PyO3/pyo3/releases/tag/v0.29.0)\n-
          [https://rustsec.org/advisories/RUSTSEC-2026-0177.html](https://rustsec.org/advisories/RUSTSEC-2026-0177.html)\n-
          [https://github.com/advisories/GHSA-chgr-c6px-7xpp](https://redirect.github.com/advisories/GHSA-chgr-c6px-7xpp)\n\nThis
          data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-chgr-c6px-7xpp)
          ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n</details>\n\n---\n\n###
          Release Notes\n\n<details>\n<summary>pyo3/pyo3 (pyo3)</summary>\n\n### [`v0.29.0`](https://redirect.github.com/pyo3/pyo3/blob/HEAD/CHANGELOG.md#0290---2026-06-11)\n\n[Compare
          Source](https://redirect.github.com/pyo3/pyo3/compare/v0.28.3...v0.29.0)\n\n#####
          Packaging\n\n- Support the new PEP 803 abi3t ABI with new `abi3t` and `abi3t-py315`
          features. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          `pyo3-macros-backend` no longer depends on `pyo3-build-config`. [#&#8203;5809](https://redirect.github.com/PyO3/pyo3/pull/5809)\n-
          Drop support for Python 3.13t (3.14t and above continue to be supported;
          CPython declared free-threading supported starting with Python 3.14). [#&#8203;5865](https://redirect.github.com/PyO3/pyo3/pull/5865)\n-
          Drop support for Python 3.7. [#&#8203;5912](https://redirect.github.com/PyO3/pyo3/pull/5912)\n-
          Extend range of supported versions of `hashbrown` optional dependency to
          include version 0.17. [#&#8203;5973](https://redirect.github.com/PyO3/pyo3/pull/5973)\n-
          Support Python 3.15.0b1. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n-
          `pyo3-ffi` is now `no_std`. [#&#8203;6022](https://redirect.github.com/PyO3/pyo3/pull/6022)\n\n#####
          Added\n\n- Add `PyErr::set_traceback` to set the traceback of an exception
          object. [#&#8203;5349](https://redirect.github.com/PyO3/pyo3/pull/5349)\n-
          Add `PyUnicodeDecodeError::new_err_from_utf8` to create a `PyErr` from a
          `str::Utf8Error`. [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n-
          `experimental-inspect`: implement `INPUT_TYPE` and `OUTPUT_TYPE` on optional
          third-party crate conversions. [#&#8203;5770](https://redirect.github.com/PyO3/pyo3/pull/5770)\n-
          `experimental-inspect`: include doc comments in generated stubs. [#&#8203;5782](https://redirect.github.com/PyO3/pyo3/pull/5782)\n-
          Add `pyo3_build_config::PythonAbi`, `pyo3_build_config::PythonAbiKind`,
          `pyo3_build_config::PythonAbiBuilder`, `pyo3_build_config::InterpreterConfig::target_abi`,
          and `pyo3_build_config::InterpreterConfigBuilder::target_abi`. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          Add `Borrowed::get` as an equivalent to `Bound::get` and `Py::get`. [#&#8203;5849](https://redirect.github.com/PyO3/pyo3/pull/5849)\n-
          Add `PyFrame::new`, `PyTraceBack::new`, and `PyFrameMethods::line_number`.
          [#&#8203;5857](https://redirect.github.com/PyO3/pyo3/pull/5857)\n- Add `PyUntypedBuffer::obj`
          to retrieve the Python object owning the buffer. [#&#8203;5870](https://redirect.github.com/PyO3/pyo3/pull/5870)\n-
          Add `PyCapsule::new_with_value` and `PyCapsule::new_with_value_and_destructor`.
          [#&#8203;5881](https://redirect.github.com/PyO3/pyo3/pull/5881)\n- Add `PyErr::set_context`
          and `PyErr::context`. [#&#8203;5887](https://redirect.github.com/PyO3/pyo3/pull/5887)\n-
          Add a small CLI to `pyo3-introspection` to generate stubs. [#&#8203;5904](https://redirect.github.com/PyO3/pyo3/pull/5904)\n-
          Add `Python::version_str`. [#&#8203;5921](https://redirect.github.com/PyO3/pyo3/pull/5921)\n-
          Add `TryFrom<&Bound<T>>` for `PyRef<T>`, `PyRefMut<T>`, `PyClassGuard<T>`
          and `PyClassGuardMut<T>`. [#&#8203;5922](https://redirect.github.com/PyO3/pyo3/pull/5922)\n-
          Add `From<&Bound<T>>` for `Bound<T>` and `Py<T>` [#&#8203;5922](https://redirect.github.com/PyO3/pyo3/pull/5922)\n-
          Add `PyDictMethods::set_default` and `PyDictMethods::set_default_ref` to
          allow atomically setting default values in a PyDict. [#&#8203;5955](https://redirect.github.com/PyO3/pyo3/pull/5955)\n-
          add `PyFrameMethods::outer|code|var|builtins|globals|locals`. [#&#8203;5967](https://redirect.github.com/PyO3/pyo3/pull/5967)\n-
          Add `From` conversions for `PyErr` from `std::time::TryFromFloatSecsError`,
          `std::time::SystemTimeError`, `std::path::StripPrefixError`, `std::env::JoinPathsError`,
          `std::char::ParseCharError`, and `std::char::CharTryFromError`. [#&#8203;6001](https://redirect.github.com/PyO3/pyo3/pull/6001)\n-
          Add `pyo3_build_config::InterpreterConfigBuilder`. [#&#8203;6034](https://redirect.github.com/PyO3/pyo3/pull/6034)\n-
          Add `PyCapsule::import_pointer` [#&#8203;6066](https://redirect.github.com/PyO3/pyo3/pull/6066)\n-
          Add `PyClassGuardMapMut`. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Expose `PyListMethods::get_item_unchecked`, `PyTupleMethods::get_item_unchecked`,
          and `PyTupleMethods::get_borrowed_item_unchecked` on abi3. [#&#8203;6075](https://redirect.github.com/PyO3/pyo3/pull/6075)\n-
          Add `PyClassGuardMapSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          Add `PyClassGuard` and `PyClassGuardMut` to `pyo3::prelude`. [#&#8203;6112](https://redirect.github.com/PyO3/pyo3/pull/6112)\n-
          Add `Debug` impls for `PyClassGuard` and `PyClassGuardMut`. [#&#8203;6112](https://redirect.github.com/PyO3/pyo3/pull/6112)\n-
          Enable extending `PyDateTime`, `PyDate`, `PyTime`, `PyDelta` and `PyTzInfo`
          on abi3 with python 3.12+. [#&#8203;6115](https://redirect.github.com/PyO3/pyo3/pull/6115)\n-
          Expose `PyFunction` available on abi3. [#&#8203;6117](https://redirect.github.com/PyO3/pyo3/pull/6117)\n-
          FFI definitions:\n  - Added FFI definitions `PyUnstable_Object_IsUniquelyReferenced`,
          `PyUnstable_Object_IsUniquelyReferencedTemporary`, `PyUnstable_EnableTryIncref`,
          and `PyUnstable_TryIncref`. [#&#8203;5828](https://redirect.github.com/PyO3/pyo3/pull/5828)\n
          \ - Add FFI definitions `ffi::PyErr_GetHandledException` and `ffi::PyErr_SetHandledException`.
          [#&#8203;5887](https://redirect.github.com/PyO3/pyo3/pull/5887)\n  - Add
          FFI definition `Py_HASH_SIPHASH13`. [#&#8203;5891](https://redirect.github.com/PyO3/pyo3/pull/5891)\n
          \ - Add FFI definition `PyStructSequence_UnnamedField` constant on Python
          3.9 and up (or 3.11 with abi3 features). [#&#8203;5892](https://redirect.github.com/PyO3/pyo3/pull/5892)\n
          \ - Add FFI definitions `PyUnstable_InterpreterFrame_GetCode`, `PyUnstable_InterpreterFrame_GetLasti`,
          `PyUnstable_InterpreterFrame_GetLine`, and `PyUnstable_ExecutableKinds`.
          [#&#8203;5932](https://redirect.github.com/PyO3/pyo3/pull/5932)\n  - Add
          FFI definitions `PyMarshal_WriteLongToFile`, `PyMarshal_WriteObjectToFile`,
          `PyMarshal_ReadLongFromFile`, `PyMarshal_ReadShortFromFile`, `PyMarshal_ReadObjectFromFile`,
          and `PyMarshal_ReadLastObjectFromFile`. [#&#8203;5934](https://redirect.github.com/PyO3/pyo3/pull/5934)\n
          \ - Add FFI definitions `PyObject_GetAIter`, `PyAIter_Check`, `PyMapping_HasKeyWithError`,
          `PyMapping_HasKeyStringWithError`, `PyMapping_GetOptionalItem`, `PyMapping_GetOptionalItemString`,
          `PySequence_ITEM`, `PySequence_Fast_GET_SIZE`, `PySequence_Fast_GET_ITEM`,
          and `PySequence_Fast_ITEMS`. [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n
          \ - Add FFI definition `compat::PyObject_HasAttrWithError`. [#&#8203;5944](https://redirect.github.com/PyO3/pyo3/pull/5944)\n
          \ - Add FFI definitions `PyDict_SetDefault`, `PyDict_SetDefaultRef`, `PyDict_ContainsString`,
          `PyDict_Pop`, `PyDict_PopString`, `PyDict_ClearWatcher`, `PyDict_Watch`,
          `PyDict_Unwatch`, and `PyFrozenDict_New`. [#&#8203;5947](https://redirect.github.com/PyO3/pyo3/pull/5947)\n
          \ - Add FFI definitions `PyDate_FromDate`, `PyDateTime_FromDateAndTime`,
          `PyDateTime_FromDateAndTimeAndFold`, `PyTime_FromTime`, `PyTime_FromTimeAndFold`,
          and `PyDelta_FromDSU`. [#&#8203;5949](https://redirect.github.com/PyO3/pyo3/pull/5949)\n
          \ - Add FFI definitions `PyDict_SetDefaultRef` and `compat::PyDict_SetDefaultRef`.
          [#&#8203;5955](https://redirect.github.com/PyO3/pyo3/pull/5955)\n    versions.\n
          \ - Add FFI definitions for non-limited API header `cpython/bytearrayobject.h`.
          [#&#8203;5966](https://redirect.github.com/PyO3/pyo3/pull/5966)\n  - Add
          FFI definitions for non-limited API version of `PyCellObject` and associated
          functions. [#&#8203;5978](https://redirect.github.com/PyO3/pyo3/pull/5978)\n
          \ - Add FFI definition `PyErr_WarnExplicitObject`. [#&#8203;5979](https://redirect.github.com/PyO3/pyo3/pull/5979)\n
          \ - Add FFI definition `PyTracebackObject`. [#&#8203;5980](https://redirect.github.com/PyO3/pyo3/pull/5980)\n
          \ - Add FFI definition `PyTuple_FromArray` on 3.15+. [#&#8203;5990](https://redirect.github.com/PyO3/pyo3/pull/5990)\n
          \ - Add FFI definitions for the PEP 820 PySlot C API. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n
          \ - Add FFI definitions for the critical section API in the limited API
          on Python 3.15\n    and newer. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n
          \ - Add FFI definitions for [PEP 757](https://peps.python.org/pep-0757/)
          `PyLong` import / export API on Python 3.14+. [#&#8203;6016](https://redirect.github.com/PyO3/pyo3/pull/6016)\n
          \ - Add FFI definitions `PyEval_SetProfileAllThreads` and `PyEval_SetTraceAllThreads`.
          [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n  - Add
          FFI definition `Py_UNICODE_TODECIMAL`. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n\n#####
          Changed\n\n- Change exception enrichment on `#[pyfunction]` argument extraction
          error to use `PyErr::add_note` instead of replacing `TypeError` instances.
          [#&#8203;5349](https://redirect.github.com/PyO3/pyo3/pull/5349)\n- Deprecate
          super-class initialization via tuples. [#&#8203;5741](https://redirect.github.com/PyO3/pyo3/pull/5741)\n-
          Change module initialization uses the PyModExport and PyABIInfo APIs on
          Python 3.15+. [#&#8203;5753](https://redirect.github.com/PyO3/pyo3/pull/5753)\n-
          Deprecate `Py<T>::get_refcnt` and `PyAnyMethods::get_refcnt` in favor of
          `pyo3::ffi::Py_REFCNT(obj.as_ptr())`. [#&#8203;5797](https://redirect.github.com/PyO3/pyo3/pull/5797)\n-
          Change `PyEnvironmentError`, `PyIOError`, and `PyWindowsError` to be type
          aliases of `PyOSError` (as is the case in Python since 3.3). [#&#8203;5803](https://redirect.github.com/PyO3/pyo3/pull/5803)\n-
          Change `pyo3_build_config::InterpreterConfig::from_interpreter` to require
          an additional `stable_abi_version` argument. The old behavior is the same
          as passing `None`. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          Change `PyList::new` to no longer have `ExactSizeIterator` bound. [#&#8203;5830](https://redirect.github.com/PyO3/pyo3/pull/5830)\n-
          `experimental-inspect`: emit `#[classattribute]` as plain Python class attributes
          and not functions annotated with `@classattribute` and `@property`. [#&#8203;5839](https://redirect.github.com/PyO3/pyo3/pull/5839)\n-
          `experimental-inspect`: use `object` as the input annotation type of magic
          methods that return `NonImplemented` if the input value is not of the correct
          type. [#&#8203;5841](https://redirect.github.com/PyO3/pyo3/pull/5841)\n-
          Deprecate `pyo3-build-config/resolve-config` feature. [#&#8203;5862](https://redirect.github.com/PyO3/pyo3/pull/5862)\n-
          Change `pyo3-ffi` to use raw-dylib for Windows linking. [#&#8203;5866](https://redirect.github.com/PyO3/pyo3/pull/5866)\n-
          Deprecate `generate-import-lib` feature. [#&#8203;5866](https://redirect.github.com/PyO3/pyo3/pull/5866)\n-
          Allow zero-sized types in `PyCapsule::new`. [#&#8203;5889](https://redirect.github.com/PyO3/pyo3/pull/5889)\n-
          `PyDate::from_timestamp` argument is now a `f64` (the Python API expects
          a float and not an integer) [#&#8203;5896](https://redirect.github.com/PyO3/pyo3/pull/5896)\n-
          `experimental-inspect`: Change `PathBuf::extract` input type hint from `str
          | os.PathLike` to `str | os.PathLike[str]` [#&#8203;5897](https://redirect.github.com/PyO3/pyo3/pull/5897)\n-
          Remove lifetime from `PythonVersionInfo`. [#&#8203;5921](https://redirect.github.com/PyO3/pyo3/pull/5921)\n-
          Remove redundant type checks for methods where CPython guarantees the type
          of `self`. [#&#8203;5930](https://redirect.github.com/PyO3/pyo3/pull/5930)\n-
          Elide temporary reference count cycles inside `PyAnyMethods::call`, `PyAnyMethods::call1`
          and `PyAnyMethods::call_method1` for arguments passed as Rust tuples containing
          borrowed references to Python objects. [#&#8203;5941](https://redirect.github.com/PyO3/pyo3/pull/5941)\n-
          Allow type annotations to be used in `#[pyo3(signature = ...)]` when `experimental-inspect`
          feature is not enabled (they will be ignored). [#&#8203;5999](https://redirect.github.com/PyO3/pyo3/pull/5999)\n-
          `pyo3-ffi` will now rebuild when the Python virtual environment changes
          in-place. [#&#8203;6008](https://redirect.github.com/PyO3/pyo3/pull/6008)\n-
          Change module initialization on 3.15+ to use PEP 820 PySlot API internally.
          [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n- Deprecate
          direct access to all `pyo3_build_config::InterpreterConfig` fields; getter
          methods have been added as replacements. [#&#8203;6034](https://redirect.github.com/PyO3/pyo3/pull/6034)\n-
          FFI definitions `_PyCode_GetExtra`, `_PyCode_SetExtra`, and `_PyEval_RequestCodeExtraIndex`
          have been updated to `PyUnstable_Code_GetExtra`, `PyUnstable_Code_SetExtra`,
          and `PyUnstable_Eval_RequestCodeExtraIndex`. [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n-
          Change `PyCapsule::import` to return an error if the pointer is not properly
          aligned. [#&#8203;6066](https://redirect.github.com/PyO3/pyo3/pull/6066)\n-
          Change `PyClassGuardMap` to be only for `PyClassGuard::map` and return `PyClassGuardMapMut`
          from `PyClassGuardMut::map`. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Change `with_critical_section_mutex2` closure to take `Option<EnteredCriticalSection>`
          instead of `EnteredCriticalSection` as the second argument. [#&#8203;6098](https://redirect.github.com/PyO3/pyo3/pull/6098)\n-
          `PyClassGuardMut::as_super` now returns `PyClassGuardMutSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          `experimental-inspect`: Generate relative imports instead of absolute ones
          (useful if the stubs are not describing a root package) [#&#8203;6097](https://redirect.github.com/PyO3/pyo3/pull/6097)\n\n#####
          Removed\n\n- Removed the broken (and unfixable) implementations of `From<str::Utf8Error>`,
          `From<string::FromUtf16Error>`, and `From<char::DecodeUtf16Error>` for `PyErr`.
          [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n- Remove
          `Py_TRACE_REFS` support (unsupported from Python 3.13). [#&#8203;5824](https://redirect.github.com/PyO3/pyo3/pull/5824)\n-
          `experimental-inspect`: Remove the `TypeInfo` enum and the `FromPyObject::type_input`
          and `IntoPyObject::type_output` functions. They are replaced by the `PyStaticExpr`
          enum and the `FromPyObject::INPUT_TYPE` and the `IntoPyObject::OUTPUT_TYPE`
          associated constants. [#&#8203;5893](https://redirect.github.com/PyO3/pyo3/pull/5893)\n-
          Remove all functionality deprecated in PyO3 0.27. [#&#8203;6068](https://redirect.github.com/PyO3/pyo3/pull/6068)\n-
          FFI definitions:\n  - Remove private FFI definitions `_PyStack_AsDict`,
          `_PyObject_CallNoArg`, `_PyObject_FastCall`, `_PyObject_FastCallTstate`.
          `_PyObject_VectorcallTstate`, `_PyObject_MakeTpCall`, `_Py_CheckFunctionResult`,
          `_PyObject_CallFunction_SizeT`, `_PyObject_CallMethod_SizeT`, and `_PySequence_IterSearch`.
          [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n  - Remove
          FFI definitions `PY_ITERSEARCH_COUNT`, `PY_ITERSEARCH_INDEX`, and `PY_ITERSEARCH_CONTAINS`.
          [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n  - Removed
          private FFI definitions `_PySet_NextEntry`, and `_PyLong_NumBits`. [#&#8203;5946](https://redirect.github.com/PyO3/pyo3/pull/5946)\n
          \ - Remove private FFI definitions `_PyFloat_CAST`, `_PyRun_SimpleFileObject`,
          `_PyRun_AnyFileObject`, `_PyRun_InteractiveLoopObject`, `_PyUnicode_CheckConsistency`,
          `_PyUnicode_COMPACT_DATA`, `_PyUnicode_NONCOMPACT_DATA`, `_PyUnicode_Ready`,
          and `_Py_HashBytes`. [#&#8203;6036](https://redirect.github.com/PyO3/pyo3/pull/6036)\n
          \ - Remove private FFI definition `_PyEval_EvalFrameDefault`. [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n
          \ - Remove private FFI definition `_PyBytes_Resize`. [#&#8203;6042](https://redirect.github.com/PyO3/pyo3/pull/6042)\n
          \ - Remove private FFI definitions `_PyErr_BadInternalCall`, `_Py_GetAllocatedBlocks`,
          `_PyObject_GC_Malloc`, `_PyObject_GC_Calloc`, and `_PyLong_NumBits`. [#&#8203;6053](https://redirect.github.com/PyO3/pyo3/pull/6053)\n
          \ - Remove `Default` for FFI definitions `PyHeapTypeObject`, `PyObjectArenaAllocator`,
          `PyHash_FuncDef`, and `PyType_Spec`. [#&#8203;6093](https://redirect.github.com/PyO3/pyo3/pull/6093)\n\n#####
          Fixed\n\n- Fix `add_libpython_rpath_link_args` emitting rpath link args
          on wasm targets which don't support rpath. [#&#8203;5447](https://redirect.github.com/PyO3/pyo3/pull/5447)\n-
          Fix `From<string::FromUtf8Error>` and `From<ffi::IntoStringError>` for `PyErr`
          producing `TypeError` due to broken internals. [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n-
          Fix `PyMappingProxy::is_type_of` and `PyWeakrefReference::is_type_of` not
          accepting subclasses. [#&#8203;5883](https://redirect.github.com/PyO3/pyo3/pull/5883)\n-
          Fix `getattr_opt` not treating `AttributeError` subclasses as missing attributes
          on Python < 3.13. [#&#8203;5985](https://redirect.github.com/PyO3/pyo3/pull/5985)\n-
          Fix compilation error for `#[new]` return types that contain named lifetimes.
          [#&#8203;5998](https://redirect.github.com/PyO3/pyo3/pull/5998)\n- Fix missing
          `'static` bound on `PyCapsule` destructors. [#&#8203;6049](https://redirect.github.com/PyO3/pyo3/pull/6049)\n-
          Fix case where `PyFrame::builtins` could return a non-dict object. [#&#8203;6052](https://redirect.github.com/PyO3/pyo3/pull/6052)\n-
          Fix type confusion when returning a `#[pyclass]` from a different pyclass'
          `#[new]` method. [#&#8203;6062](https://redirect.github.com/PyO3/pyo3/pull/6062)\n-
          Fix soundness issue caused by variance in `PyClassGuardMap` by splitting
          off the mutable variant. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Fix nondeterministic JSON metadata emitted by the `experimental-inspect`
          proc macros (to enable reproducible builds). [#&#8203;6076](https://redirect.github.com/PyO3/pyo3/pull/6076)\n-
          Fix UB in `PyEval_RestoreThread` when the interpreter is shutting down on
          Python 3.13 and older (hang the thread instead of allowing `pthread_exit`
          to jump across Rust frames). [#&#8203;6085](https://redirect.github.com/PyO3/pyo3/pull/6085)\n-
          Fix possible out of bounds read in `BoundListIterator` and `BoundTupleIterator`'s
          `nth` and `nth_back` implementations. [#&#8203;6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          Fix `BoundListIterator` and `BoundTupleIterator` not being exhausted when
          `nth` or `nth_back` is called with N larger than the remaining count of
          items. [#&#8203;6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          Fix missing `Sync` bound on closure type in `PyCFunction::new_closure`.
          [#&#8203;6096](https://redirect.github.com/PyO3/pyo3/pull/6096)\n- Fix soundness
          issue caused by exposing a mutable reference from `PyClassGuardMut::as_super`
          by moving into `PyClassGuardMutSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          FFI definitions:\n  - Fix missing FFI definition for `PyTypeObject.tp_versions_used`
          on Python 3.13 and newer. [#&#8203;5917](https://redirect.github.com/PyO3/pyo3/pull/5917)\n
          \ - Mark FFI definitions no longer available on 3.11 and up: `PyUnicode_Encode`,
          `PyUnicode_EncodeASCII`, `PyUnicode_EncodeCharmap`, `PyUnicode_EncodeDecimal`,
          `PyUnicode_EncodeLatin1`, `PyUnicode_EncodeRawUnicodeEscape`, `PyUnicode_EncodeUTF7`,
          `PyUnicode_EncodeUTF8`, `PyUnicode_EncodeUTF16`, `PyUnicode_EncodeUTF32`,
          `PyUnicode_EncodeUnicodeEscape`, `PyUnicode_TransformDecimalToASCII`, and
          `PyUnicode_TranslateCharmap`. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n
          \ - Mark FFI definition `PyUnicode_ClearFreeList` no longer available on
          3.9 and up. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n
          \ - Fix FFI definition `PyErr_SetInterruptEx` missing `c_int` return type.
          [#&#8203;6043](https://redirect.github.com/PyO3/pyo3/pull/6043)\n  - Fix
          return type of FFI definition `PyBuffer_SizeFromFormat` on Python 3.8 (was
          changed from `c_int` to `Py_ssize_t` on Python 3.9). [#&#8203;6090](https://redirect.github.com/PyO3/pyo3/pull/6090)\n
          \ - Fix return type of FFI definition `PyUnicode_Tailmatch` on PyPy (is
          `c_int`, unlike CPython). [#&#8203;6090](https://redirect.github.com/PyO3/pyo3/pull/6090)\n\n</details>\n\n---\n\n###
          Configuration\n\n\U0001F4C5 **Schedule**: (UTC)\n\n- Branch creation\n  -
          At any time (no schedule defined)\n- Automerge\n  - 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 is
          behind base branch, or you tick the rebase/retry checkbox.\n\n\U0001F515
          **Ignore**: Close this PR and you won't be reminded about this update again.\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/vexxhost/magnum-cluster-api).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->\n"
        change_url: https://github.com/vexxhost/magnum-cluster-api/pull/1067
        commit_id: 4f0bcdb52f72f823ef028f1ce92928ed64050767
        patchset: 4f0bcdb52f72f823ef028f1ce92928ed64050767
        project:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/magnum-cluster-api
          name: vexxhost/magnum-cluster-api
          short_name: magnum-cluster-api
          src_dir: src/github.com/vexxhost/magnum-cluster-api
        src_dir: src/github.com/vexxhost/magnum-cluster-api
        topic: null
      buildset: 84d7c84ed676409494b4fe4bc5d5a480
      buildset_refs:
      - branch: main
        change: '1067'
        change_message: "fix(deps): update rust crate pyo3 to 0.29.0 [security]\n\nThis
          PR contains the following updates:\n\n| Package | Type | Update | Change
          |\n|---|---|---|---|\n| [pyo3](https://redirect.github.com/pyo3/pyo3) |
          dependencies | minor | `0.28.0` \u2192 `0.29.0` |\n\n---\n\n### PyO3 has
          an Out-of-bounds Read in `nth` / `nth_back` for `PyList` and `PyTuple` iterators\n[GHSA-36hh-v3qg-5jq4](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)\n\n<details>\n<summary>More
          information</summary>\n\n#### Details\nPyO3 0.24.0 added optimized implementations
          of `Iterator::nth` and `DoubleEndedIterator::nth_back` for the `BoundListIterator`
          and `BoundTupleIterator` types. These implementations computed the target
          index using unchecked `usize` addition (`index + n`) before bounds-checking
          against the sequence length, then read the element via `get_item_unchecked`.\n\nIn
          `nth` methods, a sufficiently large `n` (combined with a non-zero internal
          index) could cause the addition to overflow and wrap around, producing a
          small \"target index\" that passed the bounds check and enabling reads at
          the front of the `list` or `tuple` of elements previously yielded by the
          iterator.\n\nIn `nth_back` methods, a sufficiently large `n` could cause
          underflow in a similar fashion, however would instead allow reads of arbitrary
          memory past the end of the `list` or `tuple` storage.\n\n#### Severity\n-
          CVSS Score: 8.7 / 10 (High)\n- Vector String: `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N`\n\n####
          References\n- [https://github.com/PyO3/pyo3/pull/6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          [https://rustsec.org/advisories/RUSTSEC-2026-0176.html](https://rustsec.org/advisories/RUSTSEC-2026-0176.html)\n-
          [https://github.com/advisories/GHSA-36hh-v3qg-5jq4](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)\n\nThis
          data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)
          ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n</details>\n\n---\n\n###
          PyO3 has a missing `Sync` bound on `PyCFunction::new_closure` closures\n[GHSA-chgr-c6px-7xpp](https://redirect.github.com/advisories/GHSA-chgr-c6px-7xpp)\n\n<details>\n<summary>More
          information</summary>\n\n#### Details\n`PyCFunction::new_closure` (and the
          temporary `new_closure_bound` complement in the 0.21\u20130.22 series) required
          the supplied closure to be `Send + 'static` but not `Sync`. The resulting
          `PyCFunction` is a Python callable that can be invoked from any Python thread,
          which means the closure may be called concurrently from multiple threads,
          and needs a `Sync` bound to prevent possible data races.\n\nThe problem
          exists under all Python versions but is particularly vulnerable under the
          newer free-threaded Python variant, which do not have serial execution imposed
          by the Global Interpreter Lock. Under releases protected by the GIL, the
          ability to \"detach\" from the Python interpreter temporarily inside the
          closure (e.g. by `Python::detach`) makes it possible for interleaved and/or
          concurrent execution of various portions of the closure.\n\nPyO3 0.29.0
          added a `Sync` bound to close this thread-safety bug.\n\n#### Severity\n-
          CVSS Score: 6.3 / 10 (Medium)\n- Vector String: `CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N`\n\n####
          References\n- [https://github.com/PyO3/pyo3/pull/6096](https://redirect.github.com/PyO3/pyo3/pull/6096)\n-
          [https://github.com/PyO3/pyo3/releases/tag/v0.29.0](https://redirect.github.com/PyO3/pyo3/releases/tag/v0.29.0)\n-
          [https://rustsec.org/advisories/RUSTSEC-2026-0177.html](https://rustsec.org/advisories/RUSTSEC-2026-0177.html)\n-
          [https://github.com/advisories/GHSA-chgr-c6px-7xpp](https://redirect.github.com/advisories/GHSA-chgr-c6px-7xpp)\n\nThis
          data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-chgr-c6px-7xpp)
          ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n</details>\n\n---\n\n###
          Release Notes\n\n<details>\n<summary>pyo3/pyo3 (pyo3)</summary>\n\n### [`v0.29.0`](https://redirect.github.com/pyo3/pyo3/blob/HEAD/CHANGELOG.md#0290---2026-06-11)\n\n[Compare
          Source](https://redirect.github.com/pyo3/pyo3/compare/v0.28.3...v0.29.0)\n\n#####
          Packaging\n\n- Support the new PEP 803 abi3t ABI with new `abi3t` and `abi3t-py315`
          features. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          `pyo3-macros-backend` no longer depends on `pyo3-build-config`. [#&#8203;5809](https://redirect.github.com/PyO3/pyo3/pull/5809)\n-
          Drop support for Python 3.13t (3.14t and above continue to be supported;
          CPython declared free-threading supported starting with Python 3.14). [#&#8203;5865](https://redirect.github.com/PyO3/pyo3/pull/5865)\n-
          Drop support for Python 3.7. [#&#8203;5912](https://redirect.github.com/PyO3/pyo3/pull/5912)\n-
          Extend range of supported versions of `hashbrown` optional dependency to
          include version 0.17. [#&#8203;5973](https://redirect.github.com/PyO3/pyo3/pull/5973)\n-
          Support Python 3.15.0b1. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n-
          `pyo3-ffi` is now `no_std`. [#&#8203;6022](https://redirect.github.com/PyO3/pyo3/pull/6022)\n\n#####
          Added\n\n- Add `PyErr::set_traceback` to set the traceback of an exception
          object. [#&#8203;5349](https://redirect.github.com/PyO3/pyo3/pull/5349)\n-
          Add `PyUnicodeDecodeError::new_err_from_utf8` to create a `PyErr` from a
          `str::Utf8Error`. [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n-
          `experimental-inspect`: implement `INPUT_TYPE` and `OUTPUT_TYPE` on optional
          third-party crate conversions. [#&#8203;5770](https://redirect.github.com/PyO3/pyo3/pull/5770)\n-
          `experimental-inspect`: include doc comments in generated stubs. [#&#8203;5782](https://redirect.github.com/PyO3/pyo3/pull/5782)\n-
          Add `pyo3_build_config::PythonAbi`, `pyo3_build_config::PythonAbiKind`,
          `pyo3_build_config::PythonAbiBuilder`, `pyo3_build_config::InterpreterConfig::target_abi`,
          and `pyo3_build_config::InterpreterConfigBuilder::target_abi`. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          Add `Borrowed::get` as an equivalent to `Bound::get` and `Py::get`. [#&#8203;5849](https://redirect.github.com/PyO3/pyo3/pull/5849)\n-
          Add `PyFrame::new`, `PyTraceBack::new`, and `PyFrameMethods::line_number`.
          [#&#8203;5857](https://redirect.github.com/PyO3/pyo3/pull/5857)\n- Add `PyUntypedBuffer::obj`
          to retrieve the Python object owning the buffer. [#&#8203;5870](https://redirect.github.com/PyO3/pyo3/pull/5870)\n-
          Add `PyCapsule::new_with_value` and `PyCapsule::new_with_value_and_destructor`.
          [#&#8203;5881](https://redirect.github.com/PyO3/pyo3/pull/5881)\n- Add `PyErr::set_context`
          and `PyErr::context`. [#&#8203;5887](https://redirect.github.com/PyO3/pyo3/pull/5887)\n-
          Add a small CLI to `pyo3-introspection` to generate stubs. [#&#8203;5904](https://redirect.github.com/PyO3/pyo3/pull/5904)\n-
          Add `Python::version_str`. [#&#8203;5921](https://redirect.github.com/PyO3/pyo3/pull/5921)\n-
          Add `TryFrom<&Bound<T>>` for `PyRef<T>`, `PyRefMut<T>`, `PyClassGuard<T>`
          and `PyClassGuardMut<T>`. [#&#8203;5922](https://redirect.github.com/PyO3/pyo3/pull/5922)\n-
          Add `From<&Bound<T>>` for `Bound<T>` and `Py<T>` [#&#8203;5922](https://redirect.github.com/PyO3/pyo3/pull/5922)\n-
          Add `PyDictMethods::set_default` and `PyDictMethods::set_default_ref` to
          allow atomically setting default values in a PyDict. [#&#8203;5955](https://redirect.github.com/PyO3/pyo3/pull/5955)\n-
          add `PyFrameMethods::outer|code|var|builtins|globals|locals`. [#&#8203;5967](https://redirect.github.com/PyO3/pyo3/pull/5967)\n-
          Add `From` conversions for `PyErr` from `std::time::TryFromFloatSecsError`,
          `std::time::SystemTimeError`, `std::path::StripPrefixError`, `std::env::JoinPathsError`,
          `std::char::ParseCharError`, and `std::char::CharTryFromError`. [#&#8203;6001](https://redirect.github.com/PyO3/pyo3/pull/6001)\n-
          Add `pyo3_build_config::InterpreterConfigBuilder`. [#&#8203;6034](https://redirect.github.com/PyO3/pyo3/pull/6034)\n-
          Add `PyCapsule::import_pointer` [#&#8203;6066](https://redirect.github.com/PyO3/pyo3/pull/6066)\n-
          Add `PyClassGuardMapMut`. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Expose `PyListMethods::get_item_unchecked`, `PyTupleMethods::get_item_unchecked`,
          and `PyTupleMethods::get_borrowed_item_unchecked` on abi3. [#&#8203;6075](https://redirect.github.com/PyO3/pyo3/pull/6075)\n-
          Add `PyClassGuardMapSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          Add `PyClassGuard` and `PyClassGuardMut` to `pyo3::prelude`. [#&#8203;6112](https://redirect.github.com/PyO3/pyo3/pull/6112)\n-
          Add `Debug` impls for `PyClassGuard` and `PyClassGuardMut`. [#&#8203;6112](https://redirect.github.com/PyO3/pyo3/pull/6112)\n-
          Enable extending `PyDateTime`, `PyDate`, `PyTime`, `PyDelta` and `PyTzInfo`
          on abi3 with python 3.12+. [#&#8203;6115](https://redirect.github.com/PyO3/pyo3/pull/6115)\n-
          Expose `PyFunction` available on abi3. [#&#8203;6117](https://redirect.github.com/PyO3/pyo3/pull/6117)\n-
          FFI definitions:\n  - Added FFI definitions `PyUnstable_Object_IsUniquelyReferenced`,
          `PyUnstable_Object_IsUniquelyReferencedTemporary`, `PyUnstable_EnableTryIncref`,
          and `PyUnstable_TryIncref`. [#&#8203;5828](https://redirect.github.com/PyO3/pyo3/pull/5828)\n
          \ - Add FFI definitions `ffi::PyErr_GetHandledException` and `ffi::PyErr_SetHandledException`.
          [#&#8203;5887](https://redirect.github.com/PyO3/pyo3/pull/5887)\n  - Add
          FFI definition `Py_HASH_SIPHASH13`. [#&#8203;5891](https://redirect.github.com/PyO3/pyo3/pull/5891)\n
          \ - Add FFI definition `PyStructSequence_UnnamedField` constant on Python
          3.9 and up (or 3.11 with abi3 features). [#&#8203;5892](https://redirect.github.com/PyO3/pyo3/pull/5892)\n
          \ - Add FFI definitions `PyUnstable_InterpreterFrame_GetCode`, `PyUnstable_InterpreterFrame_GetLasti`,
          `PyUnstable_InterpreterFrame_GetLine`, and `PyUnstable_ExecutableKinds`.
          [#&#8203;5932](https://redirect.github.com/PyO3/pyo3/pull/5932)\n  - Add
          FFI definitions `PyMarshal_WriteLongToFile`, `PyMarshal_WriteObjectToFile`,
          `PyMarshal_ReadLongFromFile`, `PyMarshal_ReadShortFromFile`, `PyMarshal_ReadObjectFromFile`,
          and `PyMarshal_ReadLastObjectFromFile`. [#&#8203;5934](https://redirect.github.com/PyO3/pyo3/pull/5934)\n
          \ - Add FFI definitions `PyObject_GetAIter`, `PyAIter_Check`, `PyMapping_HasKeyWithError`,
          `PyMapping_HasKeyStringWithError`, `PyMapping_GetOptionalItem`, `PyMapping_GetOptionalItemString`,
          `PySequence_ITEM`, `PySequence_Fast_GET_SIZE`, `PySequence_Fast_GET_ITEM`,
          and `PySequence_Fast_ITEMS`. [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n
          \ - Add FFI definition `compat::PyObject_HasAttrWithError`. [#&#8203;5944](https://redirect.github.com/PyO3/pyo3/pull/5944)\n
          \ - Add FFI definitions `PyDict_SetDefault`, `PyDict_SetDefaultRef`, `PyDict_ContainsString`,
          `PyDict_Pop`, `PyDict_PopString`, `PyDict_ClearWatcher`, `PyDict_Watch`,
          `PyDict_Unwatch`, and `PyFrozenDict_New`. [#&#8203;5947](https://redirect.github.com/PyO3/pyo3/pull/5947)\n
          \ - Add FFI definitions `PyDate_FromDate`, `PyDateTime_FromDateAndTime`,
          `PyDateTime_FromDateAndTimeAndFold`, `PyTime_FromTime`, `PyTime_FromTimeAndFold`,
          and `PyDelta_FromDSU`. [#&#8203;5949](https://redirect.github.com/PyO3/pyo3/pull/5949)\n
          \ - Add FFI definitions `PyDict_SetDefaultRef` and `compat::PyDict_SetDefaultRef`.
          [#&#8203;5955](https://redirect.github.com/PyO3/pyo3/pull/5955)\n    versions.\n
          \ - Add FFI definitions for non-limited API header `cpython/bytearrayobject.h`.
          [#&#8203;5966](https://redirect.github.com/PyO3/pyo3/pull/5966)\n  - Add
          FFI definitions for non-limited API version of `PyCellObject` and associated
          functions. [#&#8203;5978](https://redirect.github.com/PyO3/pyo3/pull/5978)\n
          \ - Add FFI definition `PyErr_WarnExplicitObject`. [#&#8203;5979](https://redirect.github.com/PyO3/pyo3/pull/5979)\n
          \ - Add FFI definition `PyTracebackObject`. [#&#8203;5980](https://redirect.github.com/PyO3/pyo3/pull/5980)\n
          \ - Add FFI definition `PyTuple_FromArray` on 3.15+. [#&#8203;5990](https://redirect.github.com/PyO3/pyo3/pull/5990)\n
          \ - Add FFI definitions for the PEP 820 PySlot C API. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n
          \ - Add FFI definitions for the critical section API in the limited API
          on Python 3.15\n    and newer. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n
          \ - Add FFI definitions for [PEP 757](https://peps.python.org/pep-0757/)
          `PyLong` import / export API on Python 3.14+. [#&#8203;6016](https://redirect.github.com/PyO3/pyo3/pull/6016)\n
          \ - Add FFI definitions `PyEval_SetProfileAllThreads` and `PyEval_SetTraceAllThreads`.
          [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n  - Add
          FFI definition `Py_UNICODE_TODECIMAL`. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n\n#####
          Changed\n\n- Change exception enrichment on `#[pyfunction]` argument extraction
          error to use `PyErr::add_note` instead of replacing `TypeError` instances.
          [#&#8203;5349](https://redirect.github.com/PyO3/pyo3/pull/5349)\n- Deprecate
          super-class initialization via tuples. [#&#8203;5741](https://redirect.github.com/PyO3/pyo3/pull/5741)\n-
          Change module initialization uses the PyModExport and PyABIInfo APIs on
          Python 3.15+. [#&#8203;5753](https://redirect.github.com/PyO3/pyo3/pull/5753)\n-
          Deprecate `Py<T>::get_refcnt` and `PyAnyMethods::get_refcnt` in favor of
          `pyo3::ffi::Py_REFCNT(obj.as_ptr())`. [#&#8203;5797](https://redirect.github.com/PyO3/pyo3/pull/5797)\n-
          Change `PyEnvironmentError`, `PyIOError`, and `PyWindowsError` to be type
          aliases of `PyOSError` (as is the case in Python since 3.3). [#&#8203;5803](https://redirect.github.com/PyO3/pyo3/pull/5803)\n-
          Change `pyo3_build_config::InterpreterConfig::from_interpreter` to require
          an additional `stable_abi_version` argument. The old behavior is the same
          as passing `None`. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          Change `PyList::new` to no longer have `ExactSizeIterator` bound. [#&#8203;5830](https://redirect.github.com/PyO3/pyo3/pull/5830)\n-
          `experimental-inspect`: emit `#[classattribute]` as plain Python class attributes
          and not functions annotated with `@classattribute` and `@property`. [#&#8203;5839](https://redirect.github.com/PyO3/pyo3/pull/5839)\n-
          `experimental-inspect`: use `object` as the input annotation type of magic
          methods that return `NonImplemented` if the input value is not of the correct
          type. [#&#8203;5841](https://redirect.github.com/PyO3/pyo3/pull/5841)\n-
          Deprecate `pyo3-build-config/resolve-config` feature. [#&#8203;5862](https://redirect.github.com/PyO3/pyo3/pull/5862)\n-
          Change `pyo3-ffi` to use raw-dylib for Windows linking. [#&#8203;5866](https://redirect.github.com/PyO3/pyo3/pull/5866)\n-
          Deprecate `generate-import-lib` feature. [#&#8203;5866](https://redirect.github.com/PyO3/pyo3/pull/5866)\n-
          Allow zero-sized types in `PyCapsule::new`. [#&#8203;5889](https://redirect.github.com/PyO3/pyo3/pull/5889)\n-
          `PyDate::from_timestamp` argument is now a `f64` (the Python API expects
          a float and not an integer) [#&#8203;5896](https://redirect.github.com/PyO3/pyo3/pull/5896)\n-
          `experimental-inspect`: Change `PathBuf::extract` input type hint from `str
          | os.PathLike` to `str | os.PathLike[str]` [#&#8203;5897](https://redirect.github.com/PyO3/pyo3/pull/5897)\n-
          Remove lifetime from `PythonVersionInfo`. [#&#8203;5921](https://redirect.github.com/PyO3/pyo3/pull/5921)\n-
          Remove redundant type checks for methods where CPython guarantees the type
          of `self`. [#&#8203;5930](https://redirect.github.com/PyO3/pyo3/pull/5930)\n-
          Elide temporary reference count cycles inside `PyAnyMethods::call`, `PyAnyMethods::call1`
          and `PyAnyMethods::call_method1` for arguments passed as Rust tuples containing
          borrowed references to Python objects. [#&#8203;5941](https://redirect.github.com/PyO3/pyo3/pull/5941)\n-
          Allow type annotations to be used in `#[pyo3(signature = ...)]` when `experimental-inspect`
          feature is not enabled (they will be ignored). [#&#8203;5999](https://redirect.github.com/PyO3/pyo3/pull/5999)\n-
          `pyo3-ffi` will now rebuild when the Python virtual environment changes
          in-place. [#&#8203;6008](https://redirect.github.com/PyO3/pyo3/pull/6008)\n-
          Change module initialization on 3.15+ to use PEP 820 PySlot API internally.
          [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n- Deprecate
          direct access to all `pyo3_build_config::InterpreterConfig` fields; getter
          methods have been added as replacements. [#&#8203;6034](https://redirect.github.com/PyO3/pyo3/pull/6034)\n-
          FFI definitions `_PyCode_GetExtra`, `_PyCode_SetExtra`, and `_PyEval_RequestCodeExtraIndex`
          have been updated to `PyUnstable_Code_GetExtra`, `PyUnstable_Code_SetExtra`,
          and `PyUnstable_Eval_RequestCodeExtraIndex`. [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n-
          Change `PyCapsule::import` to return an error if the pointer is not properly
          aligned. [#&#8203;6066](https://redirect.github.com/PyO3/pyo3/pull/6066)\n-
          Change `PyClassGuardMap` to be only for `PyClassGuard::map` and return `PyClassGuardMapMut`
          from `PyClassGuardMut::map`. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Change `with_critical_section_mutex2` closure to take `Option<EnteredCriticalSection>`
          instead of `EnteredCriticalSection` as the second argument. [#&#8203;6098](https://redirect.github.com/PyO3/pyo3/pull/6098)\n-
          `PyClassGuardMut::as_super` now returns `PyClassGuardMutSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          `experimental-inspect`: Generate relative imports instead of absolute ones
          (useful if the stubs are not describing a root package) [#&#8203;6097](https://redirect.github.com/PyO3/pyo3/pull/6097)\n\n#####
          Removed\n\n- Removed the broken (and unfixable) implementations of `From<str::Utf8Error>`,
          `From<string::FromUtf16Error>`, and `From<char::DecodeUtf16Error>` for `PyErr`.
          [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n- Remove
          `Py_TRACE_REFS` support (unsupported from Python 3.13). [#&#8203;5824](https://redirect.github.com/PyO3/pyo3/pull/5824)\n-
          `experimental-inspect`: Remove the `TypeInfo` enum and the `FromPyObject::type_input`
          and `IntoPyObject::type_output` functions. They are replaced by the `PyStaticExpr`
          enum and the `FromPyObject::INPUT_TYPE` and the `IntoPyObject::OUTPUT_TYPE`
          associated constants. [#&#8203;5893](https://redirect.github.com/PyO3/pyo3/pull/5893)\n-
          Remove all functionality deprecated in PyO3 0.27. [#&#8203;6068](https://redirect.github.com/PyO3/pyo3/pull/6068)\n-
          FFI definitions:\n  - Remove private FFI definitions `_PyStack_AsDict`,
          `_PyObject_CallNoArg`, `_PyObject_FastCall`, `_PyObject_FastCallTstate`.
          `_PyObject_VectorcallTstate`, `_PyObject_MakeTpCall`, `_Py_CheckFunctionResult`,
          `_PyObject_CallFunction_SizeT`, `_PyObject_CallMethod_SizeT`, and `_PySequence_IterSearch`.
          [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n  - Remove
          FFI definitions `PY_ITERSEARCH_COUNT`, `PY_ITERSEARCH_INDEX`, and `PY_ITERSEARCH_CONTAINS`.
          [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n  - Removed
          private FFI definitions `_PySet_NextEntry`, and `_PyLong_NumBits`. [#&#8203;5946](https://redirect.github.com/PyO3/pyo3/pull/5946)\n
          \ - Remove private FFI definitions `_PyFloat_CAST`, `_PyRun_SimpleFileObject`,
          `_PyRun_AnyFileObject`, `_PyRun_InteractiveLoopObject`, `_PyUnicode_CheckConsistency`,
          `_PyUnicode_COMPACT_DATA`, `_PyUnicode_NONCOMPACT_DATA`, `_PyUnicode_Ready`,
          and `_Py_HashBytes`. [#&#8203;6036](https://redirect.github.com/PyO3/pyo3/pull/6036)\n
          \ - Remove private FFI definition `_PyEval_EvalFrameDefault`. [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n
          \ - Remove private FFI definition `_PyBytes_Resize`. [#&#8203;6042](https://redirect.github.com/PyO3/pyo3/pull/6042)\n
          \ - Remove private FFI definitions `_PyErr_BadInternalCall`, `_Py_GetAllocatedBlocks`,
          `_PyObject_GC_Malloc`, `_PyObject_GC_Calloc`, and `_PyLong_NumBits`. [#&#8203;6053](https://redirect.github.com/PyO3/pyo3/pull/6053)\n
          \ - Remove `Default` for FFI definitions `PyHeapTypeObject`, `PyObjectArenaAllocator`,
          `PyHash_FuncDef`, and `PyType_Spec`. [#&#8203;6093](https://redirect.github.com/PyO3/pyo3/pull/6093)\n\n#####
          Fixed\n\n- Fix `add_libpython_rpath_link_args` emitting rpath link args
          on wasm targets which don't support rpath. [#&#8203;5447](https://redirect.github.com/PyO3/pyo3/pull/5447)\n-
          Fix `From<string::FromUtf8Error>` and `From<ffi::IntoStringError>` for `PyErr`
          producing `TypeError` due to broken internals. [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n-
          Fix `PyMappingProxy::is_type_of` and `PyWeakrefReference::is_type_of` not
          accepting subclasses. [#&#8203;5883](https://redirect.github.com/PyO3/pyo3/pull/5883)\n-
          Fix `getattr_opt` not treating `AttributeError` subclasses as missing attributes
          on Python < 3.13. [#&#8203;5985](https://redirect.github.com/PyO3/pyo3/pull/5985)\n-
          Fix compilation error for `#[new]` return types that contain named lifetimes.
          [#&#8203;5998](https://redirect.github.com/PyO3/pyo3/pull/5998)\n- Fix missing
          `'static` bound on `PyCapsule` destructors. [#&#8203;6049](https://redirect.github.com/PyO3/pyo3/pull/6049)\n-
          Fix case where `PyFrame::builtins` could return a non-dict object. [#&#8203;6052](https://redirect.github.com/PyO3/pyo3/pull/6052)\n-
          Fix type confusion when returning a `#[pyclass]` from a different pyclass'
          `#[new]` method. [#&#8203;6062](https://redirect.github.com/PyO3/pyo3/pull/6062)\n-
          Fix soundness issue caused by variance in `PyClassGuardMap` by splitting
          off the mutable variant. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Fix nondeterministic JSON metadata emitted by the `experimental-inspect`
          proc macros (to enable reproducible builds). [#&#8203;6076](https://redirect.github.com/PyO3/pyo3/pull/6076)\n-
          Fix UB in `PyEval_RestoreThread` when the interpreter is shutting down on
          Python 3.13 and older (hang the thread instead of allowing `pthread_exit`
          to jump across Rust frames). [#&#8203;6085](https://redirect.github.com/PyO3/pyo3/pull/6085)\n-
          Fix possible out of bounds read in `BoundListIterator` and `BoundTupleIterator`'s
          `nth` and `nth_back` implementations. [#&#8203;6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          Fix `BoundListIterator` and `BoundTupleIterator` not being exhausted when
          `nth` or `nth_back` is called with N larger than the remaining count of
          items. [#&#8203;6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          Fix missing `Sync` bound on closure type in `PyCFunction::new_closure`.
          [#&#8203;6096](https://redirect.github.com/PyO3/pyo3/pull/6096)\n- Fix soundness
          issue caused by exposing a mutable reference from `PyClassGuardMut::as_super`
          by moving into `PyClassGuardMutSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          FFI definitions:\n  - Fix missing FFI definition for `PyTypeObject.tp_versions_used`
          on Python 3.13 and newer. [#&#8203;5917](https://redirect.github.com/PyO3/pyo3/pull/5917)\n
          \ - Mark FFI definitions no longer available on 3.11 and up: `PyUnicode_Encode`,
          `PyUnicode_EncodeASCII`, `PyUnicode_EncodeCharmap`, `PyUnicode_EncodeDecimal`,
          `PyUnicode_EncodeLatin1`, `PyUnicode_EncodeRawUnicodeEscape`, `PyUnicode_EncodeUTF7`,
          `PyUnicode_EncodeUTF8`, `PyUnicode_EncodeUTF16`, `PyUnicode_EncodeUTF32`,
          `PyUnicode_EncodeUnicodeEscape`, `PyUnicode_TransformDecimalToASCII`, and
          `PyUnicode_TranslateCharmap`. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n
          \ - Mark FFI definition `PyUnicode_ClearFreeList` no longer available on
          3.9 and up. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n
          \ - Fix FFI definition `PyErr_SetInterruptEx` missing `c_int` return type.
          [#&#8203;6043](https://redirect.github.com/PyO3/pyo3/pull/6043)\n  - Fix
          return type of FFI definition `PyBuffer_SizeFromFormat` on Python 3.8 (was
          changed from `c_int` to `Py_ssize_t` on Python 3.9). [#&#8203;6090](https://redirect.github.com/PyO3/pyo3/pull/6090)\n
          \ - Fix return type of FFI definition `PyUnicode_Tailmatch` on PyPy (is
          `c_int`, unlike CPython). [#&#8203;6090](https://redirect.github.com/PyO3/pyo3/pull/6090)\n\n</details>\n\n---\n\n###
          Configuration\n\n\U0001F4C5 **Schedule**: (UTC)\n\n- Branch creation\n  -
          At any time (no schedule defined)\n- Automerge\n  - 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 is
          behind base branch, or you tick the rebase/retry checkbox.\n\n\U0001F515
          **Ignore**: Close this PR and you won't be reminded about this update again.\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/vexxhost/magnum-cluster-api).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->\n"
        change_url: https://github.com/vexxhost/magnum-cluster-api/pull/1067
        commit_id: 4f0bcdb52f72f823ef028f1ce92928ed64050767
        patchset: 4f0bcdb52f72f823ef028f1ce92928ed64050767
        project:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/magnum-cluster-api
          name: vexxhost/magnum-cluster-api
          short_name: magnum-cluster-api
          src_dir: src/github.com/vexxhost/magnum-cluster-api
        src_dir: src/github.com/vexxhost/magnum-cluster-api
        topic: null
      change: '1067'
      change_message: "fix(deps): update rust crate pyo3 to 0.29.0 [security]\n\nThis
        PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n|
        [pyo3](https://redirect.github.com/pyo3/pyo3) | dependencies | minor | `0.28.0`
        \u2192 `0.29.0` |\n\n---\n\n### PyO3 has an Out-of-bounds Read in `nth` /
        `nth_back` for `PyList` and `PyTuple` iterators\n[GHSA-36hh-v3qg-5jq4](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)\n\n<details>\n<summary>More
        information</summary>\n\n#### Details\nPyO3 0.24.0 added optimized implementations
        of `Iterator::nth` and `DoubleEndedIterator::nth_back` for the `BoundListIterator`
        and `BoundTupleIterator` types. These implementations computed the target
        index using unchecked `usize` addition (`index + n`) before bounds-checking
        against the sequence length, then read the element via `get_item_unchecked`.\n\nIn
        `nth` methods, a sufficiently large `n` (combined with a non-zero internal
        index) could cause the addition to overflow and wrap around, producing a small
        \"target index\" that passed the bounds check and enabling reads at the front
        of the `list` or `tuple` of elements previously yielded by the iterator.\n\nIn
        `nth_back` methods, a sufficiently large `n` could cause underflow in a similar
        fashion, however would instead allow reads of arbitrary memory past the end
        of the `list` or `tuple` storage.\n\n#### Severity\n- CVSS Score: 8.7 / 10
        (High)\n- Vector String: `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N`\n\n####
        References\n- [https://github.com/PyO3/pyo3/pull/6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
        [https://rustsec.org/advisories/RUSTSEC-2026-0176.html](https://rustsec.org/advisories/RUSTSEC-2026-0176.html)\n-
        [https://github.com/advisories/GHSA-36hh-v3qg-5jq4](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)\n\nThis
        data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)
        ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n</details>\n\n---\n\n###
        PyO3 has a missing `Sync` bound on `PyCFunction::new_closure` closures\n[GHSA-chgr-c6px-7xpp](https://redirect.github.com/advisories/GHSA-chgr-c6px-7xpp)\n\n<details>\n<summary>More
        information</summary>\n\n#### Details\n`PyCFunction::new_closure` (and the
        temporary `new_closure_bound` complement in the 0.21\u20130.22 series) required
        the supplied closure to be `Send + 'static` but not `Sync`. The resulting
        `PyCFunction` is a Python callable that can be invoked from any Python thread,
        which means the closure may be called concurrently from multiple threads,
        and needs a `Sync` bound to prevent possible data races.\n\nThe problem exists
        under all Python versions but is particularly vulnerable under the newer free-threaded
        Python variant, which do not have serial execution imposed by the Global Interpreter
        Lock. Under releases protected by the GIL, the ability to \"detach\" from
        the Python interpreter temporarily inside the closure (e.g. by `Python::detach`)
        makes it possible for interleaved and/or concurrent execution of various portions
        of the closure.\n\nPyO3 0.29.0 added a `Sync` bound to close this thread-safety
        bug.\n\n#### Severity\n- CVSS Score: 6.3 / 10 (Medium)\n- Vector String: `CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N`\n\n####
        References\n- [https://github.com/PyO3/pyo3/pull/6096](https://redirect.github.com/PyO3/pyo3/pull/6096)\n-
        [https://github.com/PyO3/pyo3/releases/tag/v0.29.0](https://redirect.github.com/PyO3/pyo3/releases/tag/v0.29.0)\n-
        [https://rustsec.org/advisories/RUSTSEC-2026-0177.html](https://rustsec.org/advisories/RUSTSEC-2026-0177.html)\n-
        [https://github.com/advisories/GHSA-chgr-c6px-7xpp](https://redirect.github.com/advisories/GHSA-chgr-c6px-7xpp)\n\nThis
        data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-chgr-c6px-7xpp)
        ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n</details>\n\n---\n\n###
        Release Notes\n\n<details>\n<summary>pyo3/pyo3 (pyo3)</summary>\n\n### [`v0.29.0`](https://redirect.github.com/pyo3/pyo3/blob/HEAD/CHANGELOG.md#0290---2026-06-11)\n\n[Compare
        Source](https://redirect.github.com/pyo3/pyo3/compare/v0.28.3...v0.29.0)\n\n#####
        Packaging\n\n- Support the new PEP 803 abi3t ABI with new `abi3t` and `abi3t-py315`
        features. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
        `pyo3-macros-backend` no longer depends on `pyo3-build-config`. [#&#8203;5809](https://redirect.github.com/PyO3/pyo3/pull/5809)\n-
        Drop support for Python 3.13t (3.14t and above continue to be supported; CPython
        declared free-threading supported starting with Python 3.14). [#&#8203;5865](https://redirect.github.com/PyO3/pyo3/pull/5865)\n-
        Drop support for Python 3.7. [#&#8203;5912](https://redirect.github.com/PyO3/pyo3/pull/5912)\n-
        Extend range of supported versions of `hashbrown` optional dependency to include
        version 0.17. [#&#8203;5973](https://redirect.github.com/PyO3/pyo3/pull/5973)\n-
        Support Python 3.15.0b1. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n-
        `pyo3-ffi` is now `no_std`. [#&#8203;6022](https://redirect.github.com/PyO3/pyo3/pull/6022)\n\n#####
        Added\n\n- Add `PyErr::set_traceback` to set the traceback of an exception
        object. [#&#8203;5349](https://redirect.github.com/PyO3/pyo3/pull/5349)\n-
        Add `PyUnicodeDecodeError::new_err_from_utf8` to create a `PyErr` from a `str::Utf8Error`.
        [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n- `experimental-inspect`:
        implement `INPUT_TYPE` and `OUTPUT_TYPE` on optional third-party crate conversions.
        [#&#8203;5770](https://redirect.github.com/PyO3/pyo3/pull/5770)\n- `experimental-inspect`:
        include doc comments in generated stubs. [#&#8203;5782](https://redirect.github.com/PyO3/pyo3/pull/5782)\n-
        Add `pyo3_build_config::PythonAbi`, `pyo3_build_config::PythonAbiKind`, `pyo3_build_config::PythonAbiBuilder`,
        `pyo3_build_config::InterpreterConfig::target_abi`, and `pyo3_build_config::InterpreterConfigBuilder::target_abi`.
        [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n- Add `Borrowed::get`
        as an equivalent to `Bound::get` and `Py::get`. [#&#8203;5849](https://redirect.github.com/PyO3/pyo3/pull/5849)\n-
        Add `PyFrame::new`, `PyTraceBack::new`, and `PyFrameMethods::line_number`.
        [#&#8203;5857](https://redirect.github.com/PyO3/pyo3/pull/5857)\n- Add `PyUntypedBuffer::obj`
        to retrieve the Python object owning the buffer. [#&#8203;5870](https://redirect.github.com/PyO3/pyo3/pull/5870)\n-
        Add `PyCapsule::new_with_value` and `PyCapsule::new_with_value_and_destructor`.
        [#&#8203;5881](https://redirect.github.com/PyO3/pyo3/pull/5881)\n- Add `PyErr::set_context`
        and `PyErr::context`. [#&#8203;5887](https://redirect.github.com/PyO3/pyo3/pull/5887)\n-
        Add a small CLI to `pyo3-introspection` to generate stubs. [#&#8203;5904](https://redirect.github.com/PyO3/pyo3/pull/5904)\n-
        Add `Python::version_str`. [#&#8203;5921](https://redirect.github.com/PyO3/pyo3/pull/5921)\n-
        Add `TryFrom<&Bound<T>>` for `PyRef<T>`, `PyRefMut<T>`, `PyClassGuard<T>`
        and `PyClassGuardMut<T>`. [#&#8203;5922](https://redirect.github.com/PyO3/pyo3/pull/5922)\n-
        Add `From<&Bound<T>>` for `Bound<T>` and `Py<T>` [#&#8203;5922](https://redirect.github.com/PyO3/pyo3/pull/5922)\n-
        Add `PyDictMethods::set_default` and `PyDictMethods::set_default_ref` to allow
        atomically setting default values in a PyDict. [#&#8203;5955](https://redirect.github.com/PyO3/pyo3/pull/5955)\n-
        add `PyFrameMethods::outer|code|var|builtins|globals|locals`. [#&#8203;5967](https://redirect.github.com/PyO3/pyo3/pull/5967)\n-
        Add `From` conversions for `PyErr` from `std::time::TryFromFloatSecsError`,
        `std::time::SystemTimeError`, `std::path::StripPrefixError`, `std::env::JoinPathsError`,
        `std::char::ParseCharError`, and `std::char::CharTryFromError`. [#&#8203;6001](https://redirect.github.com/PyO3/pyo3/pull/6001)\n-
        Add `pyo3_build_config::InterpreterConfigBuilder`. [#&#8203;6034](https://redirect.github.com/PyO3/pyo3/pull/6034)\n-
        Add `PyCapsule::import_pointer` [#&#8203;6066](https://redirect.github.com/PyO3/pyo3/pull/6066)\n-
        Add `PyClassGuardMapMut`. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
        Expose `PyListMethods::get_item_unchecked`, `PyTupleMethods::get_item_unchecked`,
        and `PyTupleMethods::get_borrowed_item_unchecked` on abi3. [#&#8203;6075](https://redirect.github.com/PyO3/pyo3/pull/6075)\n-
        Add `PyClassGuardMapSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
        Add `PyClassGuard` and `PyClassGuardMut` to `pyo3::prelude`. [#&#8203;6112](https://redirect.github.com/PyO3/pyo3/pull/6112)\n-
        Add `Debug` impls for `PyClassGuard` and `PyClassGuardMut`. [#&#8203;6112](https://redirect.github.com/PyO3/pyo3/pull/6112)\n-
        Enable extending `PyDateTime`, `PyDate`, `PyTime`, `PyDelta` and `PyTzInfo`
        on abi3 with python 3.12+. [#&#8203;6115](https://redirect.github.com/PyO3/pyo3/pull/6115)\n-
        Expose `PyFunction` available on abi3. [#&#8203;6117](https://redirect.github.com/PyO3/pyo3/pull/6117)\n-
        FFI definitions:\n  - Added FFI definitions `PyUnstable_Object_IsUniquelyReferenced`,
        `PyUnstable_Object_IsUniquelyReferencedTemporary`, `PyUnstable_EnableTryIncref`,
        and `PyUnstable_TryIncref`. [#&#8203;5828](https://redirect.github.com/PyO3/pyo3/pull/5828)\n
        \ - Add FFI definitions `ffi::PyErr_GetHandledException` and `ffi::PyErr_SetHandledException`.
        [#&#8203;5887](https://redirect.github.com/PyO3/pyo3/pull/5887)\n  - Add FFI
        definition `Py_HASH_SIPHASH13`. [#&#8203;5891](https://redirect.github.com/PyO3/pyo3/pull/5891)\n
        \ - Add FFI definition `PyStructSequence_UnnamedField` constant on Python
        3.9 and up (or 3.11 with abi3 features). [#&#8203;5892](https://redirect.github.com/PyO3/pyo3/pull/5892)\n
        \ - Add FFI definitions `PyUnstable_InterpreterFrame_GetCode`, `PyUnstable_InterpreterFrame_GetLasti`,
        `PyUnstable_InterpreterFrame_GetLine`, and `PyUnstable_ExecutableKinds`. [#&#8203;5932](https://redirect.github.com/PyO3/pyo3/pull/5932)\n
        \ - Add FFI definitions `PyMarshal_WriteLongToFile`, `PyMarshal_WriteObjectToFile`,
        `PyMarshal_ReadLongFromFile`, `PyMarshal_ReadShortFromFile`, `PyMarshal_ReadObjectFromFile`,
        and `PyMarshal_ReadLastObjectFromFile`. [#&#8203;5934](https://redirect.github.com/PyO3/pyo3/pull/5934)\n
        \ - Add FFI definitions `PyObject_GetAIter`, `PyAIter_Check`, `PyMapping_HasKeyWithError`,
        `PyMapping_HasKeyStringWithError`, `PyMapping_GetOptionalItem`, `PyMapping_GetOptionalItemString`,
        `PySequence_ITEM`, `PySequence_Fast_GET_SIZE`, `PySequence_Fast_GET_ITEM`,
        and `PySequence_Fast_ITEMS`. [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n
        \ - Add FFI definition `compat::PyObject_HasAttrWithError`. [#&#8203;5944](https://redirect.github.com/PyO3/pyo3/pull/5944)\n
        \ - Add FFI definitions `PyDict_SetDefault`, `PyDict_SetDefaultRef`, `PyDict_ContainsString`,
        `PyDict_Pop`, `PyDict_PopString`, `PyDict_ClearWatcher`, `PyDict_Watch`, `PyDict_Unwatch`,
        and `PyFrozenDict_New`. [#&#8203;5947](https://redirect.github.com/PyO3/pyo3/pull/5947)\n
        \ - Add FFI definitions `PyDate_FromDate`, `PyDateTime_FromDateAndTime`, `PyDateTime_FromDateAndTimeAndFold`,
        `PyTime_FromTime`, `PyTime_FromTimeAndFold`, and `PyDelta_FromDSU`. [#&#8203;5949](https://redirect.github.com/PyO3/pyo3/pull/5949)\n
        \ - Add FFI definitions `PyDict_SetDefaultRef` and `compat::PyDict_SetDefaultRef`.
        [#&#8203;5955](https://redirect.github.com/PyO3/pyo3/pull/5955)\n    versions.\n
        \ - Add FFI definitions for non-limited API header `cpython/bytearrayobject.h`.
        [#&#8203;5966](https://redirect.github.com/PyO3/pyo3/pull/5966)\n  - Add FFI
        definitions for non-limited API version of `PyCellObject` and associated functions.
        [#&#8203;5978](https://redirect.github.com/PyO3/pyo3/pull/5978)\n  - Add FFI
        definition `PyErr_WarnExplicitObject`. [#&#8203;5979](https://redirect.github.com/PyO3/pyo3/pull/5979)\n
        \ - Add FFI definition `PyTracebackObject`. [#&#8203;5980](https://redirect.github.com/PyO3/pyo3/pull/5980)\n
        \ - Add FFI definition `PyTuple_FromArray` on 3.15+. [#&#8203;5990](https://redirect.github.com/PyO3/pyo3/pull/5990)\n
        \ - Add FFI definitions for the PEP 820 PySlot C API. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n
        \ - Add FFI definitions for the critical section API in the limited API on
        Python 3.15\n    and newer. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n
        \ - Add FFI definitions for [PEP 757](https://peps.python.org/pep-0757/) `PyLong`
        import / export API on Python 3.14+. [#&#8203;6016](https://redirect.github.com/PyO3/pyo3/pull/6016)\n
        \ - Add FFI definitions `PyEval_SetProfileAllThreads` and `PyEval_SetTraceAllThreads`.
        [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n  - Add FFI
        definition `Py_UNICODE_TODECIMAL`. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n\n#####
        Changed\n\n- Change exception enrichment on `#[pyfunction]` argument extraction
        error to use `PyErr::add_note` instead of replacing `TypeError` instances.
        [#&#8203;5349](https://redirect.github.com/PyO3/pyo3/pull/5349)\n- Deprecate
        super-class initialization via tuples. [#&#8203;5741](https://redirect.github.com/PyO3/pyo3/pull/5741)\n-
        Change module initialization uses the PyModExport and PyABIInfo APIs on Python
        3.15+. [#&#8203;5753](https://redirect.github.com/PyO3/pyo3/pull/5753)\n-
        Deprecate `Py<T>::get_refcnt` and `PyAnyMethods::get_refcnt` in favor of `pyo3::ffi::Py_REFCNT(obj.as_ptr())`.
        [#&#8203;5797](https://redirect.github.com/PyO3/pyo3/pull/5797)\n- Change
        `PyEnvironmentError`, `PyIOError`, and `PyWindowsError` to be type aliases
        of `PyOSError` (as is the case in Python since 3.3). [#&#8203;5803](https://redirect.github.com/PyO3/pyo3/pull/5803)\n-
        Change `pyo3_build_config::InterpreterConfig::from_interpreter` to require
        an additional `stable_abi_version` argument. The old behavior is the same
        as passing `None`. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
        Change `PyList::new` to no longer have `ExactSizeIterator` bound. [#&#8203;5830](https://redirect.github.com/PyO3/pyo3/pull/5830)\n-
        `experimental-inspect`: emit `#[classattribute]` as plain Python class attributes
        and not functions annotated with `@classattribute` and `@property`. [#&#8203;5839](https://redirect.github.com/PyO3/pyo3/pull/5839)\n-
        `experimental-inspect`: use `object` as the input annotation type of magic
        methods that return `NonImplemented` if the input value is not of the correct
        type. [#&#8203;5841](https://redirect.github.com/PyO3/pyo3/pull/5841)\n- Deprecate
        `pyo3-build-config/resolve-config` feature. [#&#8203;5862](https://redirect.github.com/PyO3/pyo3/pull/5862)\n-
        Change `pyo3-ffi` to use raw-dylib for Windows linking. [#&#8203;5866](https://redirect.github.com/PyO3/pyo3/pull/5866)\n-
        Deprecate `generate-import-lib` feature. [#&#8203;5866](https://redirect.github.com/PyO3/pyo3/pull/5866)\n-
        Allow zero-sized types in `PyCapsule::new`. [#&#8203;5889](https://redirect.github.com/PyO3/pyo3/pull/5889)\n-
        `PyDate::from_timestamp` argument is now a `f64` (the Python API expects a
        float and not an integer) [#&#8203;5896](https://redirect.github.com/PyO3/pyo3/pull/5896)\n-
        `experimental-inspect`: Change `PathBuf::extract` input type hint from `str
        | os.PathLike` to `str | os.PathLike[str]` [#&#8203;5897](https://redirect.github.com/PyO3/pyo3/pull/5897)\n-
        Remove lifetime from `PythonVersionInfo`. [#&#8203;5921](https://redirect.github.com/PyO3/pyo3/pull/5921)\n-
        Remove redundant type checks for methods where CPython guarantees the type
        of `self`. [#&#8203;5930](https://redirect.github.com/PyO3/pyo3/pull/5930)\n-
        Elide temporary reference count cycles inside `PyAnyMethods::call`, `PyAnyMethods::call1`
        and `PyAnyMethods::call_method1` for arguments passed as Rust tuples containing
        borrowed references to Python objects. [#&#8203;5941](https://redirect.github.com/PyO3/pyo3/pull/5941)\n-
        Allow type annotations to be used in `#[pyo3(signature = ...)]` when `experimental-inspect`
        feature is not enabled (they will be ignored). [#&#8203;5999](https://redirect.github.com/PyO3/pyo3/pull/5999)\n-
        `pyo3-ffi` will now rebuild when the Python virtual environment changes in-place.
        [#&#8203;6008](https://redirect.github.com/PyO3/pyo3/pull/6008)\n- Change
        module initialization on 3.15+ to use PEP 820 PySlot API internally. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n-
        Deprecate direct access to all `pyo3_build_config::InterpreterConfig` fields;
        getter methods have been added as replacements. [#&#8203;6034](https://redirect.github.com/PyO3/pyo3/pull/6034)\n-
        FFI definitions `_PyCode_GetExtra`, `_PyCode_SetExtra`, and `_PyEval_RequestCodeExtraIndex`
        have been updated to `PyUnstable_Code_GetExtra`, `PyUnstable_Code_SetExtra`,
        and `PyUnstable_Eval_RequestCodeExtraIndex`. [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n-
        Change `PyCapsule::import` to return an error if the pointer is not properly
        aligned. [#&#8203;6066](https://redirect.github.com/PyO3/pyo3/pull/6066)\n-
        Change `PyClassGuardMap` to be only for `PyClassGuard::map` and return `PyClassGuardMapMut`
        from `PyClassGuardMut::map`. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
        Change `with_critical_section_mutex2` closure to take `Option<EnteredCriticalSection>`
        instead of `EnteredCriticalSection` as the second argument. [#&#8203;6098](https://redirect.github.com/PyO3/pyo3/pull/6098)\n-
        `PyClassGuardMut::as_super` now returns `PyClassGuardMutSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
        `experimental-inspect`: Generate relative imports instead of absolute ones
        (useful if the stubs are not describing a root package) [#&#8203;6097](https://redirect.github.com/PyO3/pyo3/pull/6097)\n\n#####
        Removed\n\n- Removed the broken (and unfixable) implementations of `From<str::Utf8Error>`,
        `From<string::FromUtf16Error>`, and `From<char::DecodeUtf16Error>` for `PyErr`.
        [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n- Remove
        `Py_TRACE_REFS` support (unsupported from Python 3.13). [#&#8203;5824](https://redirect.github.com/PyO3/pyo3/pull/5824)\n-
        `experimental-inspect`: Remove the `TypeInfo` enum and the `FromPyObject::type_input`
        and `IntoPyObject::type_output` functions. They are replaced by the `PyStaticExpr`
        enum and the `FromPyObject::INPUT_TYPE` and the `IntoPyObject::OUTPUT_TYPE`
        associated constants. [#&#8203;5893](https://redirect.github.com/PyO3/pyo3/pull/5893)\n-
        Remove all functionality deprecated in PyO3 0.27. [#&#8203;6068](https://redirect.github.com/PyO3/pyo3/pull/6068)\n-
        FFI definitions:\n  - Remove private FFI definitions `_PyStack_AsDict`, `_PyObject_CallNoArg`,
        `_PyObject_FastCall`, `_PyObject_FastCallTstate`. `_PyObject_VectorcallTstate`,
        `_PyObject_MakeTpCall`, `_Py_CheckFunctionResult`, `_PyObject_CallFunction_SizeT`,
        `_PyObject_CallMethod_SizeT`, and `_PySequence_IterSearch`. [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n
        \ - Remove FFI definitions `PY_ITERSEARCH_COUNT`, `PY_ITERSEARCH_INDEX`, and
        `PY_ITERSEARCH_CONTAINS`. [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n
        \ - Removed private FFI definitions `_PySet_NextEntry`, and `_PyLong_NumBits`.
        [#&#8203;5946](https://redirect.github.com/PyO3/pyo3/pull/5946)\n  - Remove
        private FFI definitions `_PyFloat_CAST`, `_PyRun_SimpleFileObject`, `_PyRun_AnyFileObject`,
        `_PyRun_InteractiveLoopObject`, `_PyUnicode_CheckConsistency`, `_PyUnicode_COMPACT_DATA`,
        `_PyUnicode_NONCOMPACT_DATA`, `_PyUnicode_Ready`, and `_Py_HashBytes`. [#&#8203;6036](https://redirect.github.com/PyO3/pyo3/pull/6036)\n
        \ - Remove private FFI definition `_PyEval_EvalFrameDefault`. [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n
        \ - Remove private FFI definition `_PyBytes_Resize`. [#&#8203;6042](https://redirect.github.com/PyO3/pyo3/pull/6042)\n
        \ - Remove private FFI definitions `_PyErr_BadInternalCall`, `_Py_GetAllocatedBlocks`,
        `_PyObject_GC_Malloc`, `_PyObject_GC_Calloc`, and `_PyLong_NumBits`. [#&#8203;6053](https://redirect.github.com/PyO3/pyo3/pull/6053)\n
        \ - Remove `Default` for FFI definitions `PyHeapTypeObject`, `PyObjectArenaAllocator`,
        `PyHash_FuncDef`, and `PyType_Spec`. [#&#8203;6093](https://redirect.github.com/PyO3/pyo3/pull/6093)\n\n#####
        Fixed\n\n- Fix `add_libpython_rpath_link_args` emitting rpath link args on
        wasm targets which don't support rpath. [#&#8203;5447](https://redirect.github.com/PyO3/pyo3/pull/5447)\n-
        Fix `From<string::FromUtf8Error>` and `From<ffi::IntoStringError>` for `PyErr`
        producing `TypeError` due to broken internals. [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n-
        Fix `PyMappingProxy::is_type_of` and `PyWeakrefReference::is_type_of` not
        accepting subclasses. [#&#8203;5883](https://redirect.github.com/PyO3/pyo3/pull/5883)\n-
        Fix `getattr_opt` not treating `AttributeError` subclasses as missing attributes
        on Python < 3.13. [#&#8203;5985](https://redirect.github.com/PyO3/pyo3/pull/5985)\n-
        Fix compilation error for `#[new]` return types that contain named lifetimes.
        [#&#8203;5998](https://redirect.github.com/PyO3/pyo3/pull/5998)\n- Fix missing
        `'static` bound on `PyCapsule` destructors. [#&#8203;6049](https://redirect.github.com/PyO3/pyo3/pull/6049)\n-
        Fix case where `PyFrame::builtins` could return a non-dict object. [#&#8203;6052](https://redirect.github.com/PyO3/pyo3/pull/6052)\n-
        Fix type confusion when returning a `#[pyclass]` from a different pyclass'
        `#[new]` method. [#&#8203;6062](https://redirect.github.com/PyO3/pyo3/pull/6062)\n-
        Fix soundness issue caused by variance in `PyClassGuardMap` by splitting off
        the mutable variant. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
        Fix nondeterministic JSON metadata emitted by the `experimental-inspect` proc
        macros (to enable reproducible builds). [#&#8203;6076](https://redirect.github.com/PyO3/pyo3/pull/6076)\n-
        Fix UB in `PyEval_RestoreThread` when the interpreter is shutting down on
        Python 3.13 and older (hang the thread instead of allowing `pthread_exit`
        to jump across Rust frames). [#&#8203;6085](https://redirect.github.com/PyO3/pyo3/pull/6085)\n-
        Fix possible out of bounds read in `BoundListIterator` and `BoundTupleIterator`'s
        `nth` and `nth_back` implementations. [#&#8203;6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
        Fix `BoundListIterator` and `BoundTupleIterator` not being exhausted when
        `nth` or `nth_back` is called with N larger than the remaining count of items.
        [#&#8203;6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n- Fix missing
        `Sync` bound on closure type in `PyCFunction::new_closure`. [#&#8203;6096](https://redirect.github.com/PyO3/pyo3/pull/6096)\n-
        Fix soundness issue caused by exposing a mutable reference from `PyClassGuardMut::as_super`
        by moving into `PyClassGuardMutSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
        FFI definitions:\n  - Fix missing FFI definition for `PyTypeObject.tp_versions_used`
        on Python 3.13 and newer. [#&#8203;5917](https://redirect.github.com/PyO3/pyo3/pull/5917)\n
        \ - Mark FFI definitions no longer available on 3.11 and up: `PyUnicode_Encode`,
        `PyUnicode_EncodeASCII`, `PyUnicode_EncodeCharmap`, `PyUnicode_EncodeDecimal`,
        `PyUnicode_EncodeLatin1`, `PyUnicode_EncodeRawUnicodeEscape`, `PyUnicode_EncodeUTF7`,
        `PyUnicode_EncodeUTF8`, `PyUnicode_EncodeUTF16`, `PyUnicode_EncodeUTF32`,
        `PyUnicode_EncodeUnicodeEscape`, `PyUnicode_TransformDecimalToASCII`, and
        `PyUnicode_TranslateCharmap`. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n
        \ - Mark FFI definition `PyUnicode_ClearFreeList` no longer available on 3.9
        and up. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n
        \ - Fix FFI definition `PyErr_SetInterruptEx` missing `c_int` return type.
        [#&#8203;6043](https://redirect.github.com/PyO3/pyo3/pull/6043)\n  - Fix return
        type of FFI definition `PyBuffer_SizeFromFormat` on Python 3.8 (was changed
        from `c_int` to `Py_ssize_t` on Python 3.9). [#&#8203;6090](https://redirect.github.com/PyO3/pyo3/pull/6090)\n
        \ - Fix return type of FFI definition `PyUnicode_Tailmatch` on PyPy (is `c_int`,
        unlike CPython). [#&#8203;6090](https://redirect.github.com/PyO3/pyo3/pull/6090)\n\n</details>\n\n---\n\n###
        Configuration\n\n\U0001F4C5 **Schedule**: (UTC)\n\n- Branch creation\n  -
        At any time (no schedule defined)\n- Automerge\n  - 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 is behind
        base branch, or you tick the rebase/retry checkbox.\n\n\U0001F515 **Ignore**:
        Close this PR and you won't be reminded about this update again.\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/vexxhost/magnum-cluster-api).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->\n"
      change_url: https://github.com/vexxhost/magnum-cluster-api/pull/1067
      child_jobs: []
      commit_id: 4f0bcdb52f72f823ef028f1ce92928ed64050767
      event_id: 65dc9090-69ef-11f1-8d5e-0e140a4b667a
      executor:
        hostname: 2d72f0692154
        inventory_file: /var/lib/zuul/builds/2450c322d11e4155a83f4faf13d4bfed/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/2450c322d11e4155a83f4faf13d4bfed/work/logs
        result_data_file: /var/lib/zuul/builds/2450c322d11e4155a83f4faf13d4bfed/work/results.json
        src_root: /var/lib/zuul/builds/2450c322d11e4155a83f4faf13d4bfed/work/src
        work_root: /var/lib/zuul/builds/2450c322d11e4155a83f4faf13d4bfed/work
      include_vars: []
      items:
      - branch: main
        change: '1067'
        change_message: "fix(deps): update rust crate pyo3 to 0.29.0 [security]\n\nThis
          PR contains the following updates:\n\n| Package | Type | Update | Change
          |\n|---|---|---|---|\n| [pyo3](https://redirect.github.com/pyo3/pyo3) |
          dependencies | minor | `0.28.0` \u2192 `0.29.0` |\n\n---\n\n### PyO3 has
          an Out-of-bounds Read in `nth` / `nth_back` for `PyList` and `PyTuple` iterators\n[GHSA-36hh-v3qg-5jq4](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)\n\n<details>\n<summary>More
          information</summary>\n\n#### Details\nPyO3 0.24.0 added optimized implementations
          of `Iterator::nth` and `DoubleEndedIterator::nth_back` for the `BoundListIterator`
          and `BoundTupleIterator` types. These implementations computed the target
          index using unchecked `usize` addition (`index + n`) before bounds-checking
          against the sequence length, then read the element via `get_item_unchecked`.\n\nIn
          `nth` methods, a sufficiently large `n` (combined with a non-zero internal
          index) could cause the addition to overflow and wrap around, producing a
          small \"target index\" that passed the bounds check and enabling reads at
          the front of the `list` or `tuple` of elements previously yielded by the
          iterator.\n\nIn `nth_back` methods, a sufficiently large `n` could cause
          underflow in a similar fashion, however would instead allow reads of arbitrary
          memory past the end of the `list` or `tuple` storage.\n\n#### Severity\n-
          CVSS Score: 8.7 / 10 (High)\n- Vector String: `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N`\n\n####
          References\n- [https://github.com/PyO3/pyo3/pull/6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          [https://rustsec.org/advisories/RUSTSEC-2026-0176.html](https://rustsec.org/advisories/RUSTSEC-2026-0176.html)\n-
          [https://github.com/advisories/GHSA-36hh-v3qg-5jq4](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)\n\nThis
          data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)
          ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n</details>\n\n---\n\n###
          PyO3 has a missing `Sync` bound on `PyCFunction::new_closure` closures\n[GHSA-chgr-c6px-7xpp](https://redirect.github.com/advisories/GHSA-chgr-c6px-7xpp)\n\n<details>\n<summary>More
          information</summary>\n\n#### Details\n`PyCFunction::new_closure` (and the
          temporary `new_closure_bound` complement in the 0.21\u20130.22 series) required
          the supplied closure to be `Send + 'static` but not `Sync`. The resulting
          `PyCFunction` is a Python callable that can be invoked from any Python thread,
          which means the closure may be called concurrently from multiple threads,
          and needs a `Sync` bound to prevent possible data races.\n\nThe problem
          exists under all Python versions but is particularly vulnerable under the
          newer free-threaded Python variant, which do not have serial execution imposed
          by the Global Interpreter Lock. Under releases protected by the GIL, the
          ability to \"detach\" from the Python interpreter temporarily inside the
          closure (e.g. by `Python::detach`) makes it possible for interleaved and/or
          concurrent execution of various portions of the closure.\n\nPyO3 0.29.0
          added a `Sync` bound to close this thread-safety bug.\n\n#### Severity\n-
          CVSS Score: 6.3 / 10 (Medium)\n- Vector String: `CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N`\n\n####
          References\n- [https://github.com/PyO3/pyo3/pull/6096](https://redirect.github.com/PyO3/pyo3/pull/6096)\n-
          [https://github.com/PyO3/pyo3/releases/tag/v0.29.0](https://redirect.github.com/PyO3/pyo3/releases/tag/v0.29.0)\n-
          [https://rustsec.org/advisories/RUSTSEC-2026-0177.html](https://rustsec.org/advisories/RUSTSEC-2026-0177.html)\n-
          [https://github.com/advisories/GHSA-chgr-c6px-7xpp](https://redirect.github.com/advisories/GHSA-chgr-c6px-7xpp)\n\nThis
          data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-chgr-c6px-7xpp)
          ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n</details>\n\n---\n\n###
          Release Notes\n\n<details>\n<summary>pyo3/pyo3 (pyo3)</summary>\n\n### [`v0.29.0`](https://redirect.github.com/pyo3/pyo3/blob/HEAD/CHANGELOG.md#0290---2026-06-11)\n\n[Compare
          Source](https://redirect.github.com/pyo3/pyo3/compare/v0.28.3...v0.29.0)\n\n#####
          Packaging\n\n- Support the new PEP 803 abi3t ABI with new `abi3t` and `abi3t-py315`
          features. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          `pyo3-macros-backend` no longer depends on `pyo3-build-config`. [#&#8203;5809](https://redirect.github.com/PyO3/pyo3/pull/5809)\n-
          Drop support for Python 3.13t (3.14t and above continue to be supported;
          CPython declared free-threading supported starting with Python 3.14). [#&#8203;5865](https://redirect.github.com/PyO3/pyo3/pull/5865)\n-
          Drop support for Python 3.7. [#&#8203;5912](https://redirect.github.com/PyO3/pyo3/pull/5912)\n-
          Extend range of supported versions of `hashbrown` optional dependency to
          include version 0.17. [#&#8203;5973](https://redirect.github.com/PyO3/pyo3/pull/5973)\n-
          Support Python 3.15.0b1. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n-
          `pyo3-ffi` is now `no_std`. [#&#8203;6022](https://redirect.github.com/PyO3/pyo3/pull/6022)\n\n#####
          Added\n\n- Add `PyErr::set_traceback` to set the traceback of an exception
          object. [#&#8203;5349](https://redirect.github.com/PyO3/pyo3/pull/5349)\n-
          Add `PyUnicodeDecodeError::new_err_from_utf8` to create a `PyErr` from a
          `str::Utf8Error`. [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n-
          `experimental-inspect`: implement `INPUT_TYPE` and `OUTPUT_TYPE` on optional
          third-party crate conversions. [#&#8203;5770](https://redirect.github.com/PyO3/pyo3/pull/5770)\n-
          `experimental-inspect`: include doc comments in generated stubs. [#&#8203;5782](https://redirect.github.com/PyO3/pyo3/pull/5782)\n-
          Add `pyo3_build_config::PythonAbi`, `pyo3_build_config::PythonAbiKind`,
          `pyo3_build_config::PythonAbiBuilder`, `pyo3_build_config::InterpreterConfig::target_abi`,
          and `pyo3_build_config::InterpreterConfigBuilder::target_abi`. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          Add `Borrowed::get` as an equivalent to `Bound::get` and `Py::get`. [#&#8203;5849](https://redirect.github.com/PyO3/pyo3/pull/5849)\n-
          Add `PyFrame::new`, `PyTraceBack::new`, and `PyFrameMethods::line_number`.
          [#&#8203;5857](https://redirect.github.com/PyO3/pyo3/pull/5857)\n- Add `PyUntypedBuffer::obj`
          to retrieve the Python object owning the buffer. [#&#8203;5870](https://redirect.github.com/PyO3/pyo3/pull/5870)\n-
          Add `PyCapsule::new_with_value` and `PyCapsule::new_with_value_and_destructor`.
          [#&#8203;5881](https://redirect.github.com/PyO3/pyo3/pull/5881)\n- Add `PyErr::set_context`
          and `PyErr::context`. [#&#8203;5887](https://redirect.github.com/PyO3/pyo3/pull/5887)\n-
          Add a small CLI to `pyo3-introspection` to generate stubs. [#&#8203;5904](https://redirect.github.com/PyO3/pyo3/pull/5904)\n-
          Add `Python::version_str`. [#&#8203;5921](https://redirect.github.com/PyO3/pyo3/pull/5921)\n-
          Add `TryFrom<&Bound<T>>` for `PyRef<T>`, `PyRefMut<T>`, `PyClassGuard<T>`
          and `PyClassGuardMut<T>`. [#&#8203;5922](https://redirect.github.com/PyO3/pyo3/pull/5922)\n-
          Add `From<&Bound<T>>` for `Bound<T>` and `Py<T>` [#&#8203;5922](https://redirect.github.com/PyO3/pyo3/pull/5922)\n-
          Add `PyDictMethods::set_default` and `PyDictMethods::set_default_ref` to
          allow atomically setting default values in a PyDict. [#&#8203;5955](https://redirect.github.com/PyO3/pyo3/pull/5955)\n-
          add `PyFrameMethods::outer|code|var|builtins|globals|locals`. [#&#8203;5967](https://redirect.github.com/PyO3/pyo3/pull/5967)\n-
          Add `From` conversions for `PyErr` from `std::time::TryFromFloatSecsError`,
          `std::time::SystemTimeError`, `std::path::StripPrefixError`, `std::env::JoinPathsError`,
          `std::char::ParseCharError`, and `std::char::CharTryFromError`. [#&#8203;6001](https://redirect.github.com/PyO3/pyo3/pull/6001)\n-
          Add `pyo3_build_config::InterpreterConfigBuilder`. [#&#8203;6034](https://redirect.github.com/PyO3/pyo3/pull/6034)\n-
          Add `PyCapsule::import_pointer` [#&#8203;6066](https://redirect.github.com/PyO3/pyo3/pull/6066)\n-
          Add `PyClassGuardMapMut`. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Expose `PyListMethods::get_item_unchecked`, `PyTupleMethods::get_item_unchecked`,
          and `PyTupleMethods::get_borrowed_item_unchecked` on abi3. [#&#8203;6075](https://redirect.github.com/PyO3/pyo3/pull/6075)\n-
          Add `PyClassGuardMapSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          Add `PyClassGuard` and `PyClassGuardMut` to `pyo3::prelude`. [#&#8203;6112](https://redirect.github.com/PyO3/pyo3/pull/6112)\n-
          Add `Debug` impls for `PyClassGuard` and `PyClassGuardMut`. [#&#8203;6112](https://redirect.github.com/PyO3/pyo3/pull/6112)\n-
          Enable extending `PyDateTime`, `PyDate`, `PyTime`, `PyDelta` and `PyTzInfo`
          on abi3 with python 3.12+. [#&#8203;6115](https://redirect.github.com/PyO3/pyo3/pull/6115)\n-
          Expose `PyFunction` available on abi3. [#&#8203;6117](https://redirect.github.com/PyO3/pyo3/pull/6117)\n-
          FFI definitions:\n  - Added FFI definitions `PyUnstable_Object_IsUniquelyReferenced`,
          `PyUnstable_Object_IsUniquelyReferencedTemporary`, `PyUnstable_EnableTryIncref`,
          and `PyUnstable_TryIncref`. [#&#8203;5828](https://redirect.github.com/PyO3/pyo3/pull/5828)\n
          \ - Add FFI definitions `ffi::PyErr_GetHandledException` and `ffi::PyErr_SetHandledException`.
          [#&#8203;5887](https://redirect.github.com/PyO3/pyo3/pull/5887)\n  - Add
          FFI definition `Py_HASH_SIPHASH13`. [#&#8203;5891](https://redirect.github.com/PyO3/pyo3/pull/5891)\n
          \ - Add FFI definition `PyStructSequence_UnnamedField` constant on Python
          3.9 and up (or 3.11 with abi3 features). [#&#8203;5892](https://redirect.github.com/PyO3/pyo3/pull/5892)\n
          \ - Add FFI definitions `PyUnstable_InterpreterFrame_GetCode`, `PyUnstable_InterpreterFrame_GetLasti`,
          `PyUnstable_InterpreterFrame_GetLine`, and `PyUnstable_ExecutableKinds`.
          [#&#8203;5932](https://redirect.github.com/PyO3/pyo3/pull/5932)\n  - Add
          FFI definitions `PyMarshal_WriteLongToFile`, `PyMarshal_WriteObjectToFile`,
          `PyMarshal_ReadLongFromFile`, `PyMarshal_ReadShortFromFile`, `PyMarshal_ReadObjectFromFile`,
          and `PyMarshal_ReadLastObjectFromFile`. [#&#8203;5934](https://redirect.github.com/PyO3/pyo3/pull/5934)\n
          \ - Add FFI definitions `PyObject_GetAIter`, `PyAIter_Check`, `PyMapping_HasKeyWithError`,
          `PyMapping_HasKeyStringWithError`, `PyMapping_GetOptionalItem`, `PyMapping_GetOptionalItemString`,
          `PySequence_ITEM`, `PySequence_Fast_GET_SIZE`, `PySequence_Fast_GET_ITEM`,
          and `PySequence_Fast_ITEMS`. [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n
          \ - Add FFI definition `compat::PyObject_HasAttrWithError`. [#&#8203;5944](https://redirect.github.com/PyO3/pyo3/pull/5944)\n
          \ - Add FFI definitions `PyDict_SetDefault`, `PyDict_SetDefaultRef`, `PyDict_ContainsString`,
          `PyDict_Pop`, `PyDict_PopString`, `PyDict_ClearWatcher`, `PyDict_Watch`,
          `PyDict_Unwatch`, and `PyFrozenDict_New`. [#&#8203;5947](https://redirect.github.com/PyO3/pyo3/pull/5947)\n
          \ - Add FFI definitions `PyDate_FromDate`, `PyDateTime_FromDateAndTime`,
          `PyDateTime_FromDateAndTimeAndFold`, `PyTime_FromTime`, `PyTime_FromTimeAndFold`,
          and `PyDelta_FromDSU`. [#&#8203;5949](https://redirect.github.com/PyO3/pyo3/pull/5949)\n
          \ - Add FFI definitions `PyDict_SetDefaultRef` and `compat::PyDict_SetDefaultRef`.
          [#&#8203;5955](https://redirect.github.com/PyO3/pyo3/pull/5955)\n    versions.\n
          \ - Add FFI definitions for non-limited API header `cpython/bytearrayobject.h`.
          [#&#8203;5966](https://redirect.github.com/PyO3/pyo3/pull/5966)\n  - Add
          FFI definitions for non-limited API version of `PyCellObject` and associated
          functions. [#&#8203;5978](https://redirect.github.com/PyO3/pyo3/pull/5978)\n
          \ - Add FFI definition `PyErr_WarnExplicitObject`. [#&#8203;5979](https://redirect.github.com/PyO3/pyo3/pull/5979)\n
          \ - Add FFI definition `PyTracebackObject`. [#&#8203;5980](https://redirect.github.com/PyO3/pyo3/pull/5980)\n
          \ - Add FFI definition `PyTuple_FromArray` on 3.15+. [#&#8203;5990](https://redirect.github.com/PyO3/pyo3/pull/5990)\n
          \ - Add FFI definitions for the PEP 820 PySlot C API. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n
          \ - Add FFI definitions for the critical section API in the limited API
          on Python 3.15\n    and newer. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n
          \ - Add FFI definitions for [PEP 757](https://peps.python.org/pep-0757/)
          `PyLong` import / export API on Python 3.14+. [#&#8203;6016](https://redirect.github.com/PyO3/pyo3/pull/6016)\n
          \ - Add FFI definitions `PyEval_SetProfileAllThreads` and `PyEval_SetTraceAllThreads`.
          [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n  - Add
          FFI definition `Py_UNICODE_TODECIMAL`. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n\n#####
          Changed\n\n- Change exception enrichment on `#[pyfunction]` argument extraction
          error to use `PyErr::add_note` instead of replacing `TypeError` instances.
          [#&#8203;5349](https://redirect.github.com/PyO3/pyo3/pull/5349)\n- Deprecate
          super-class initialization via tuples. [#&#8203;5741](https://redirect.github.com/PyO3/pyo3/pull/5741)\n-
          Change module initialization uses the PyModExport and PyABIInfo APIs on
          Python 3.15+. [#&#8203;5753](https://redirect.github.com/PyO3/pyo3/pull/5753)\n-
          Deprecate `Py<T>::get_refcnt` and `PyAnyMethods::get_refcnt` in favor of
          `pyo3::ffi::Py_REFCNT(obj.as_ptr())`. [#&#8203;5797](https://redirect.github.com/PyO3/pyo3/pull/5797)\n-
          Change `PyEnvironmentError`, `PyIOError`, and `PyWindowsError` to be type
          aliases of `PyOSError` (as is the case in Python since 3.3). [#&#8203;5803](https://redirect.github.com/PyO3/pyo3/pull/5803)\n-
          Change `pyo3_build_config::InterpreterConfig::from_interpreter` to require
          an additional `stable_abi_version` argument. The old behavior is the same
          as passing `None`. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          Change `PyList::new` to no longer have `ExactSizeIterator` bound. [#&#8203;5830](https://redirect.github.com/PyO3/pyo3/pull/5830)\n-
          `experimental-inspect`: emit `#[classattribute]` as plain Python class attributes
          and not functions annotated with `@classattribute` and `@property`. [#&#8203;5839](https://redirect.github.com/PyO3/pyo3/pull/5839)\n-
          `experimental-inspect`: use `object` as the input annotation type of magic
          methods that return `NonImplemented` if the input value is not of the correct
          type. [#&#8203;5841](https://redirect.github.com/PyO3/pyo3/pull/5841)\n-
          Deprecate `pyo3-build-config/resolve-config` feature. [#&#8203;5862](https://redirect.github.com/PyO3/pyo3/pull/5862)\n-
          Change `pyo3-ffi` to use raw-dylib for Windows linking. [#&#8203;5866](https://redirect.github.com/PyO3/pyo3/pull/5866)\n-
          Deprecate `generate-import-lib` feature. [#&#8203;5866](https://redirect.github.com/PyO3/pyo3/pull/5866)\n-
          Allow zero-sized types in `PyCapsule::new`. [#&#8203;5889](https://redirect.github.com/PyO3/pyo3/pull/5889)\n-
          `PyDate::from_timestamp` argument is now a `f64` (the Python API expects
          a float and not an integer) [#&#8203;5896](https://redirect.github.com/PyO3/pyo3/pull/5896)\n-
          `experimental-inspect`: Change `PathBuf::extract` input type hint from `str
          | os.PathLike` to `str | os.PathLike[str]` [#&#8203;5897](https://redirect.github.com/PyO3/pyo3/pull/5897)\n-
          Remove lifetime from `PythonVersionInfo`. [#&#8203;5921](https://redirect.github.com/PyO3/pyo3/pull/5921)\n-
          Remove redundant type checks for methods where CPython guarantees the type
          of `self`. [#&#8203;5930](https://redirect.github.com/PyO3/pyo3/pull/5930)\n-
          Elide temporary reference count cycles inside `PyAnyMethods::call`, `PyAnyMethods::call1`
          and `PyAnyMethods::call_method1` for arguments passed as Rust tuples containing
          borrowed references to Python objects. [#&#8203;5941](https://redirect.github.com/PyO3/pyo3/pull/5941)\n-
          Allow type annotations to be used in `#[pyo3(signature = ...)]` when `experimental-inspect`
          feature is not enabled (they will be ignored). [#&#8203;5999](https://redirect.github.com/PyO3/pyo3/pull/5999)\n-
          `pyo3-ffi` will now rebuild when the Python virtual environment changes
          in-place. [#&#8203;6008](https://redirect.github.com/PyO3/pyo3/pull/6008)\n-
          Change module initialization on 3.15+ to use PEP 820 PySlot API internally.
          [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n- Deprecate
          direct access to all `pyo3_build_config::InterpreterConfig` fields; getter
          methods have been added as replacements. [#&#8203;6034](https://redirect.github.com/PyO3/pyo3/pull/6034)\n-
          FFI definitions `_PyCode_GetExtra`, `_PyCode_SetExtra`, and `_PyEval_RequestCodeExtraIndex`
          have been updated to `PyUnstable_Code_GetExtra`, `PyUnstable_Code_SetExtra`,
          and `PyUnstable_Eval_RequestCodeExtraIndex`. [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n-
          Change `PyCapsule::import` to return an error if the pointer is not properly
          aligned. [#&#8203;6066](https://redirect.github.com/PyO3/pyo3/pull/6066)\n-
          Change `PyClassGuardMap` to be only for `PyClassGuard::map` and return `PyClassGuardMapMut`
          from `PyClassGuardMut::map`. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Change `with_critical_section_mutex2` closure to take `Option<EnteredCriticalSection>`
          instead of `EnteredCriticalSection` as the second argument. [#&#8203;6098](https://redirect.github.com/PyO3/pyo3/pull/6098)\n-
          `PyClassGuardMut::as_super` now returns `PyClassGuardMutSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          `experimental-inspect`: Generate relative imports instead of absolute ones
          (useful if the stubs are not describing a root package) [#&#8203;6097](https://redirect.github.com/PyO3/pyo3/pull/6097)\n\n#####
          Removed\n\n- Removed the broken (and unfixable) implementations of `From<str::Utf8Error>`,
          `From<string::FromUtf16Error>`, and `From<char::DecodeUtf16Error>` for `PyErr`.
          [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n- Remove
          `Py_TRACE_REFS` support (unsupported from Python 3.13). [#&#8203;5824](https://redirect.github.com/PyO3/pyo3/pull/5824)\n-
          `experimental-inspect`: Remove the `TypeInfo` enum and the `FromPyObject::type_input`
          and `IntoPyObject::type_output` functions. They are replaced by the `PyStaticExpr`
          enum and the `FromPyObject::INPUT_TYPE` and the `IntoPyObject::OUTPUT_TYPE`
          associated constants. [#&#8203;5893](https://redirect.github.com/PyO3/pyo3/pull/5893)\n-
          Remove all functionality deprecated in PyO3 0.27. [#&#8203;6068](https://redirect.github.com/PyO3/pyo3/pull/6068)\n-
          FFI definitions:\n  - Remove private FFI definitions `_PyStack_AsDict`,
          `_PyObject_CallNoArg`, `_PyObject_FastCall`, `_PyObject_FastCallTstate`.
          `_PyObject_VectorcallTstate`, `_PyObject_MakeTpCall`, `_Py_CheckFunctionResult`,
          `_PyObject_CallFunction_SizeT`, `_PyObject_CallMethod_SizeT`, and `_PySequence_IterSearch`.
          [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n  - Remove
          FFI definitions `PY_ITERSEARCH_COUNT`, `PY_ITERSEARCH_INDEX`, and `PY_ITERSEARCH_CONTAINS`.
          [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n  - Removed
          private FFI definitions `_PySet_NextEntry`, and `_PyLong_NumBits`. [#&#8203;5946](https://redirect.github.com/PyO3/pyo3/pull/5946)\n
          \ - Remove private FFI definitions `_PyFloat_CAST`, `_PyRun_SimpleFileObject`,
          `_PyRun_AnyFileObject`, `_PyRun_InteractiveLoopObject`, `_PyUnicode_CheckConsistency`,
          `_PyUnicode_COMPACT_DATA`, `_PyUnicode_NONCOMPACT_DATA`, `_PyUnicode_Ready`,
          and `_Py_HashBytes`. [#&#8203;6036](https://redirect.github.com/PyO3/pyo3/pull/6036)\n
          \ - Remove private FFI definition `_PyEval_EvalFrameDefault`. [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n
          \ - Remove private FFI definition `_PyBytes_Resize`. [#&#8203;6042](https://redirect.github.com/PyO3/pyo3/pull/6042)\n
          \ - Remove private FFI definitions `_PyErr_BadInternalCall`, `_Py_GetAllocatedBlocks`,
          `_PyObject_GC_Malloc`, `_PyObject_GC_Calloc`, and `_PyLong_NumBits`. [#&#8203;6053](https://redirect.github.com/PyO3/pyo3/pull/6053)\n
          \ - Remove `Default` for FFI definitions `PyHeapTypeObject`, `PyObjectArenaAllocator`,
          `PyHash_FuncDef`, and `PyType_Spec`. [#&#8203;6093](https://redirect.github.com/PyO3/pyo3/pull/6093)\n\n#####
          Fixed\n\n- Fix `add_libpython_rpath_link_args` emitting rpath link args
          on wasm targets which don't support rpath. [#&#8203;5447](https://redirect.github.com/PyO3/pyo3/pull/5447)\n-
          Fix `From<string::FromUtf8Error>` and `From<ffi::IntoStringError>` for `PyErr`
          producing `TypeError` due to broken internals. [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n-
          Fix `PyMappingProxy::is_type_of` and `PyWeakrefReference::is_type_of` not
          accepting subclasses. [#&#8203;5883](https://redirect.github.com/PyO3/pyo3/pull/5883)\n-
          Fix `getattr_opt` not treating `AttributeError` subclasses as missing attributes
          on Python < 3.13. [#&#8203;5985](https://redirect.github.com/PyO3/pyo3/pull/5985)\n-
          Fix compilation error for `#[new]` return types that contain named lifetimes.
          [#&#8203;5998](https://redirect.github.com/PyO3/pyo3/pull/5998)\n- Fix missing
          `'static` bound on `PyCapsule` destructors. [#&#8203;6049](https://redirect.github.com/PyO3/pyo3/pull/6049)\n-
          Fix case where `PyFrame::builtins` could return a non-dict object. [#&#8203;6052](https://redirect.github.com/PyO3/pyo3/pull/6052)\n-
          Fix type confusion when returning a `#[pyclass]` from a different pyclass'
          `#[new]` method. [#&#8203;6062](https://redirect.github.com/PyO3/pyo3/pull/6062)\n-
          Fix soundness issue caused by variance in `PyClassGuardMap` by splitting
          off the mutable variant. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Fix nondeterministic JSON metadata emitted by the `experimental-inspect`
          proc macros (to enable reproducible builds). [#&#8203;6076](https://redirect.github.com/PyO3/pyo3/pull/6076)\n-
          Fix UB in `PyEval_RestoreThread` when the interpreter is shutting down on
          Python 3.13 and older (hang the thread instead of allowing `pthread_exit`
          to jump across Rust frames). [#&#8203;6085](https://redirect.github.com/PyO3/pyo3/pull/6085)\n-
          Fix possible out of bounds read in `BoundListIterator` and `BoundTupleIterator`'s
          `nth` and `nth_back` implementations. [#&#8203;6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          Fix `BoundListIterator` and `BoundTupleIterator` not being exhausted when
          `nth` or `nth_back` is called with N larger than the remaining count of
          items. [#&#8203;6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          Fix missing `Sync` bound on closure type in `PyCFunction::new_closure`.
          [#&#8203;6096](https://redirect.github.com/PyO3/pyo3/pull/6096)\n- Fix soundness
          issue caused by exposing a mutable reference from `PyClassGuardMut::as_super`
          by moving into `PyClassGuardMutSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          FFI definitions:\n  - Fix missing FFI definition for `PyTypeObject.tp_versions_used`
          on Python 3.13 and newer. [#&#8203;5917](https://redirect.github.com/PyO3/pyo3/pull/5917)\n
          \ - Mark FFI definitions no longer available on 3.11 and up: `PyUnicode_Encode`,
          `PyUnicode_EncodeASCII`, `PyUnicode_EncodeCharmap`, `PyUnicode_EncodeDecimal`,
          `PyUnicode_EncodeLatin1`, `PyUnicode_EncodeRawUnicodeEscape`, `PyUnicode_EncodeUTF7`,
          `PyUnicode_EncodeUTF8`, `PyUnicode_EncodeUTF16`, `PyUnicode_EncodeUTF32`,
          `PyUnicode_EncodeUnicodeEscape`, `PyUnicode_TransformDecimalToASCII`, and
          `PyUnicode_TranslateCharmap`. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n
          \ - Mark FFI definition `PyUnicode_ClearFreeList` no longer available on
          3.9 and up. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n
          \ - Fix FFI definition `PyErr_SetInterruptEx` missing `c_int` return type.
          [#&#8203;6043](https://redirect.github.com/PyO3/pyo3/pull/6043)\n  - Fix
          return type of FFI definition `PyBuffer_SizeFromFormat` on Python 3.8 (was
          changed from `c_int` to `Py_ssize_t` on Python 3.9). [#&#8203;6090](https://redirect.github.com/PyO3/pyo3/pull/6090)\n
          \ - Fix return type of FFI definition `PyUnicode_Tailmatch` on PyPy (is
          `c_int`, unlike CPython). [#&#8203;6090](https://redirect.github.com/PyO3/pyo3/pull/6090)\n\n</details>\n\n---\n\n###
          Configuration\n\n\U0001F4C5 **Schedule**: (UTC)\n\n- Branch creation\n  -
          At any time (no schedule defined)\n- Automerge\n  - 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 is
          behind base branch, or you tick the rebase/retry checkbox.\n\n\U0001F515
          **Ignore**: Close this PR and you won't be reminded about this update again.\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/vexxhost/magnum-cluster-api).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->\n"
        change_url: https://github.com/vexxhost/magnum-cluster-api/pull/1067
        commit_id: 4f0bcdb52f72f823ef028f1ce92928ed64050767
        patchset: 4f0bcdb52f72f823ef028f1ce92928ed64050767
        project:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/magnum-cluster-api
          name: vexxhost/magnum-cluster-api
          short_name: magnum-cluster-api
          src_dir: src/github.com/vexxhost/magnum-cluster-api
        topic: null
      job: magnum-cluster-api-hydrophone-v1.33.12-calico
      jobtags: []
      max_attempts: 3
      message: Zml4KGRlcHMpOiB1cGRhdGUgcnVzdCBjcmF0ZSBweW8zIHRvIDAuMjkuMCBbc2VjdXJpdHldCgpUaGlzIFBSIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgdXBkYXRlczoKCnwgUGFja2FnZSB8IFR5cGUgfCBVcGRhdGUgfCBDaGFuZ2UgfAp8LS0tfC0tLXwtLS18LS0tfAp8IFtweW8zXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcHlvMy9weW8zKSB8IGRlcGVuZGVuY2llcyB8IG1pbm9yIHwgYDAuMjguMGAg4oaSIGAwLjI5LjBgIHwKCi0tLQoKIyMjIFB5TzMgaGFzIGFuIE91dC1vZi1ib3VuZHMgUmVhZCBpbiBgbnRoYCAvIGBudGhfYmFja2AgZm9yIGBQeUxpc3RgIGFuZCBgUHlUdXBsZWAgaXRlcmF0b3JzCltHSFNBLTM2aGgtdjNxZy01anE0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYWR2aXNvcmllcy9HSFNBLTM2aGgtdjNxZy01anE0KQoKPGRldGFpbHM+CjxzdW1tYXJ5Pk1vcmUgaW5mb3JtYXRpb248L3N1bW1hcnk+CgojIyMjIERldGFpbHMKUHlPMyAwLjI0LjAgYWRkZWQgb3B0aW1pemVkIGltcGxlbWVudGF0aW9ucyBvZiBgSXRlcmF0b3I6Om50aGAgYW5kIGBEb3VibGVFbmRlZEl0ZXJhdG9yOjpudGhfYmFja2AgZm9yIHRoZSBgQm91bmRMaXN0SXRlcmF0b3JgIGFuZCBgQm91bmRUdXBsZUl0ZXJhdG9yYCB0eXBlcy4gVGhlc2UgaW1wbGVtZW50YXRpb25zIGNvbXB1dGVkIHRoZSB0YXJnZXQgaW5kZXggdXNpbmcgdW5jaGVja2VkIGB1c2l6ZWAgYWRkaXRpb24gKGBpbmRleCArIG5gKSBiZWZvcmUgYm91bmRzLWNoZWNraW5nIGFnYWluc3QgdGhlIHNlcXVlbmNlIGxlbmd0aCwgdGhlbiByZWFkIHRoZSBlbGVtZW50IHZpYSBgZ2V0X2l0ZW1fdW5jaGVja2VkYC4KCkluIGBudGhgIG1ldGhvZHMsIGEgc3VmZmljaWVudGx5IGxhcmdlIGBuYCAoY29tYmluZWQgd2l0aCBhIG5vbi16ZXJvIGludGVybmFsIGluZGV4KSBjb3VsZCBjYXVzZSB0aGUgYWRkaXRpb24gdG8gb3ZlcmZsb3cgYW5kIHdyYXAgYXJvdW5kLCBwcm9kdWNpbmcgYSBzbWFsbCAidGFyZ2V0IGluZGV4IiB0aGF0IHBhc3NlZCB0aGUgYm91bmRzIGNoZWNrIGFuZCBlbmFibGluZyByZWFkcyBhdCB0aGUgZnJvbnQgb2YgdGhlIGBsaXN0YCBvciBgdHVwbGVgIG9mIGVsZW1lbnRzIHByZXZpb3VzbHkgeWllbGRlZCBieSB0aGUgaXRlcmF0b3IuCgpJbiBgbnRoX2JhY2tgIG1ldGhvZHMsIGEgc3VmZmljaWVudGx5IGxhcmdlIGBuYCBjb3VsZCBjYXVzZSB1bmRlcmZsb3cgaW4gYSBzaW1pbGFyIGZhc2hpb24sIGhvd2V2ZXIgd291bGQgaW5zdGVhZCBhbGxvdyByZWFkcyBvZiBhcmJpdHJhcnkgbWVtb3J5IHBhc3QgdGhlIGVuZCBvZiB0aGUgYGxpc3RgIG9yIGB0dXBsZWAgc3RvcmFnZS4KCiMjIyMgU2V2ZXJpdHkKLSBDVlNTIFNjb3JlOiA4LjcgLyAxMCAoSGlnaCkKLSBWZWN0b3IgU3RyaW5nOiBgQ1ZTUzo0LjAvQVY6Ti9BQzpML0FUOk4vUFI6Ti9VSTpOL1ZDOkgvVkk6Ti9WQTpOL1NDOk4vU0k6Ti9TQTpOYAoKIyMjIyBSZWZlcmVuY2VzCi0gW2h0dHBzOi8vZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDg2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjA4NikKLSBbaHR0cHM6Ly9ydXN0c2VjLm9yZy9hZHZpc29yaWVzL1JVU1RTRUMtMjAyNi0wMTc2Lmh0bWxdKGh0dHBzOi8vcnVzdHNlYy5vcmcvYWR2aXNvcmllcy9SVVNUU0VDLTIwMjYtMDE3Ni5odG1sKQotIFtodHRwczovL2dpdGh1Yi5jb20vYWR2aXNvcmllcy9HSFNBLTM2aGgtdjNxZy01anE0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYWR2aXNvcmllcy9HSFNBLTM2aGgtdjNxZy01anE0KQoKVGhpcyBkYXRhIGlzIHByb3ZpZGVkIGJ5IHRoZSBbR2l0SHViIEFkdmlzb3J5IERhdGFiYXNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYWR2aXNvcmllcy9HSFNBLTM2aGgtdjNxZy01anE0KSAoW0NDLUJZIDQuMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dpdGh1Yi9hZHZpc29yeS1kYXRhYmFzZS9ibG9iL21haW4vTElDRU5TRS5tZCkpLgo8L2RldGFpbHM+CgotLS0KCiMjIyBQeU8zIGhhcyBhIG1pc3NpbmcgYFN5bmNgIGJvdW5kIG9uIGBQeUNGdW5jdGlvbjo6bmV3X2Nsb3N1cmVgIGNsb3N1cmVzCltHSFNBLWNoZ3ItYzZweC03eHBwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYWR2aXNvcmllcy9HSFNBLWNoZ3ItYzZweC03eHBwKQoKPGRldGFpbHM+CjxzdW1tYXJ5Pk1vcmUgaW5mb3JtYXRpb248L3N1bW1hcnk+CgojIyMjIERldGFpbHMKYFB5Q0Z1bmN0aW9uOjpuZXdfY2xvc3VyZWAgKGFuZCB0aGUgdGVtcG9yYXJ5IGBuZXdfY2xvc3VyZV9ib3VuZGAgY29tcGxlbWVudCBpbiB0aGUgMC4yMeKAkzAuMjIgc2VyaWVzKSByZXF1aXJlZCB0aGUgc3VwcGxpZWQgY2xvc3VyZSB0byBiZSBgU2VuZCArICdzdGF0aWNgIGJ1dCBub3QgYFN5bmNgLiBUaGUgcmVzdWx0aW5nIGBQeUNGdW5jdGlvbmAgaXMgYSBQeXRob24gY2FsbGFibGUgdGhhdCBjYW4gYmUgaW52b2tlZCBmcm9tIGFueSBQeXRob24gdGhyZWFkLCB3aGljaCBtZWFucyB0aGUgY2xvc3VyZSBtYXkgYmUgY2FsbGVkIGNvbmN1cnJlbnRseSBmcm9tIG11bHRpcGxlIHRocmVhZHMsIGFuZCBuZWVkcyBhIGBTeW5jYCBib3VuZCB0byBwcmV2ZW50IHBvc3NpYmxlIGRhdGEgcmFjZXMuCgpUaGUgcHJvYmxlbSBleGlzdHMgdW5kZXIgYWxsIFB5dGhvbiB2ZXJzaW9ucyBidXQgaXMgcGFydGljdWxhcmx5IHZ1bG5lcmFibGUgdW5kZXIgdGhlIG5ld2VyIGZyZWUtdGhyZWFkZWQgUHl0aG9uIHZhcmlhbnQsIHdoaWNoIGRvIG5vdCBoYXZlIHNlcmlhbCBleGVjdXRpb24gaW1wb3NlZCBieSB0aGUgR2xvYmFsIEludGVycHJldGVyIExvY2suIFVuZGVyIHJlbGVhc2VzIHByb3RlY3RlZCBieSB0aGUgR0lMLCB0aGUgYWJpbGl0eSB0byAiZGV0YWNoIiBmcm9tIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgdGVtcG9yYXJpbHkgaW5zaWRlIHRoZSBjbG9zdXJlIChlLmcuIGJ5IGBQeXRob246OmRldGFjaGApIG1ha2VzIGl0IHBvc3NpYmxlIGZvciBpbnRlcmxlYXZlZCBhbmQvb3IgY29uY3VycmVudCBleGVjdXRpb24gb2YgdmFyaW91cyBwb3J0aW9ucyBvZiB0aGUgY2xvc3VyZS4KClB5TzMgMC4yOS4wIGFkZGVkIGEgYFN5bmNgIGJvdW5kIHRvIGNsb3NlIHRoaXMgdGhyZWFkLXNhZmV0eSBidWcuCgojIyMjIFNldmVyaXR5Ci0gQ1ZTUyBTY29yZTogNi4zIC8gMTAgKE1lZGl1bSkKLSBWZWN0b3IgU3RyaW5nOiBgQ1ZTUzo0LjAvQVY6Ti9BQzpIL0FUOlAvUFI6Ti9VSTpOL1ZDOkwvVkk6TC9WQTpML1NDOk4vU0k6Ti9TQTpOYAoKIyMjIyBSZWZlcmVuY2VzCi0gW2h0dHBzOi8vZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDk2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjA5NikKLSBbaHR0cHM6Ly9naXRodWIuY29tL1B5TzMvcHlvMy9yZWxlYXNlcy90YWcvdjAuMjkuMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9yZWxlYXNlcy90YWcvdjAuMjkuMCkKLSBbaHR0cHM6Ly9ydXN0c2VjLm9yZy9hZHZpc29yaWVzL1JVU1RTRUMtMjAyNi0wMTc3Lmh0bWxdKGh0dHBzOi8vcnVzdHNlYy5vcmcvYWR2aXNvcmllcy9SVVNUU0VDLTIwMjYtMDE3Ny5odG1sKQotIFtodHRwczovL2dpdGh1Yi5jb20vYWR2aXNvcmllcy9HSFNBLWNoZ3ItYzZweC03eHBwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYWR2aXNvcmllcy9HSFNBLWNoZ3ItYzZweC03eHBwKQoKVGhpcyBkYXRhIGlzIHByb3ZpZGVkIGJ5IHRoZSBbR2l0SHViIEFkdmlzb3J5IERhdGFiYXNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYWR2aXNvcmllcy9HSFNBLWNoZ3ItYzZweC03eHBwKSAoW0NDLUJZIDQuMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dpdGh1Yi9hZHZpc29yeS1kYXRhYmFzZS9ibG9iL21haW4vTElDRU5TRS5tZCkpLgo8L2RldGFpbHM+CgotLS0KCiMjIyBSZWxlYXNlIE5vdGVzCgo8ZGV0YWlscz4KPHN1bW1hcnk+cHlvMy9weW8zIChweW8zKTwvc3VtbWFyeT4KCiMjIyBbYHYwLjI5LjBgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcHlvMy9weW8zL2Jsb2IvSEVBRC9DSEFOR0VMT0cubWQjMDI5MC0tLTIwMjYtMDYtMTEpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9weW8zL3B5bzMvY29tcGFyZS92MC4yOC4zLi4udjAuMjkuMCkKCiMjIyMjIFBhY2thZ2luZwoKLSBTdXBwb3J0IHRoZSBuZXcgUEVQIDgwMyBhYmkzdCBBQkkgd2l0aCBuZXcgYGFiaTN0YCBhbmQgYGFiaTN0LXB5MzE1YCBmZWF0dXJlcy4gWyMmIzgyMDM7NTgwN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU4MDcpCi0gYHB5bzMtbWFjcm9zLWJhY2tlbmRgIG5vIGxvbmdlciBkZXBlbmRzIG9uIGBweW8zLWJ1aWxkLWNvbmZpZ2AuIFsjJiM4MjAzOzU4MDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODA5KQotIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDMuMTN0ICgzLjE0dCBhbmQgYWJvdmUgY29udGludWUgdG8gYmUgc3VwcG9ydGVkOyBDUHl0aG9uIGRlY2xhcmVkIGZyZWUtdGhyZWFkaW5nIHN1cHBvcnRlZCBzdGFydGluZyB3aXRoIFB5dGhvbiAzLjE0KS4gWyMmIzgyMDM7NTg2NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU4NjUpCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43LiBbIyYjODIwMzs1OTEyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTkxMikKLSBFeHRlbmQgcmFuZ2Ugb2Ygc3VwcG9ydGVkIHZlcnNpb25zIG9mIGBoYXNoYnJvd25gIG9wdGlvbmFsIGRlcGVuZGVuY3kgdG8gaW5jbHVkZSB2ZXJzaW9uIDAuMTcuIFsjJiM4MjAzOzU5NzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTczKQotIFN1cHBvcnQgUHl0aG9uIDMuMTUuMGIxLiBbIyYjODIwMzs2MDE0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjAxNCkKLSBgcHlvMy1mZmlgIGlzIG5vdyBgbm9fc3RkYC4gWyMmIzgyMDM7NjAyMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwMjIpCgojIyMjIyBBZGRlZAoKLSBBZGQgYFB5RXJyOjpzZXRfdHJhY2ViYWNrYCB0byBzZXQgdGhlIHRyYWNlYmFjayBvZiBhbiBleGNlcHRpb24gb2JqZWN0LiBbIyYjODIwMzs1MzQ5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTM0OSkKLSBBZGQgYFB5VW5pY29kZURlY29kZUVycm9yOjpuZXdfZXJyX2Zyb21fdXRmOGAgdG8gY3JlYXRlIGEgYFB5RXJyYCBmcm9tIGEgYHN0cjo6VXRmOEVycm9yYC4gWyMmIzgyMDM7NTY2OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU2NjgpCi0gYGV4cGVyaW1lbnRhbC1pbnNwZWN0YDogaW1wbGVtZW50IGBJTlBVVF9UWVBFYCBhbmQgYE9VVFBVVF9UWVBFYCBvbiBvcHRpb25hbCB0aGlyZC1wYXJ0eSBjcmF0ZSBjb252ZXJzaW9ucy4gWyMmIzgyMDM7NTc3MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU3NzApCi0gYGV4cGVyaW1lbnRhbC1pbnNwZWN0YDogaW5jbHVkZSBkb2MgY29tbWVudHMgaW4gZ2VuZXJhdGVkIHN0dWJzLiBbIyYjODIwMzs1NzgyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTc4MikKLSBBZGQgYHB5bzNfYnVpbGRfY29uZmlnOjpQeXRob25BYmlgLCBgcHlvM19idWlsZF9jb25maWc6OlB5dGhvbkFiaUtpbmRgLCBgcHlvM19idWlsZF9jb25maWc6OlB5dGhvbkFiaUJ1aWxkZXJgLCBgcHlvM19idWlsZF9jb25maWc6OkludGVycHJldGVyQ29uZmlnOjp0YXJnZXRfYWJpYCwgYW5kIGBweW8zX2J1aWxkX2NvbmZpZzo6SW50ZXJwcmV0ZXJDb25maWdCdWlsZGVyOjp0YXJnZXRfYWJpYC4gWyMmIzgyMDM7NTgwN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU4MDcpCi0gQWRkIGBCb3Jyb3dlZDo6Z2V0YCBhcyBhbiBlcXVpdmFsZW50IHRvIGBCb3VuZDo6Z2V0YCBhbmQgYFB5OjpnZXRgLiBbIyYjODIwMzs1ODQ5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTg0OSkKLSBBZGQgYFB5RnJhbWU6Om5ld2AsIGBQeVRyYWNlQmFjazo6bmV3YCwgYW5kIGBQeUZyYW1lTWV0aG9kczo6bGluZV9udW1iZXJgLiBbIyYjODIwMzs1ODU3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTg1NykKLSBBZGQgYFB5VW50eXBlZEJ1ZmZlcjo6b2JqYCB0byByZXRyaWV2ZSB0aGUgUHl0aG9uIG9iamVjdCBvd25pbmcgdGhlIGJ1ZmZlci4gWyMmIzgyMDM7NTg3MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU4NzApCi0gQWRkIGBQeUNhcHN1bGU6Om5ld193aXRoX3ZhbHVlYCBhbmQgYFB5Q2Fwc3VsZTo6bmV3X3dpdGhfdmFsdWVfYW5kX2Rlc3RydWN0b3JgLiBbIyYjODIwMzs1ODgxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTg4MSkKLSBBZGQgYFB5RXJyOjpzZXRfY29udGV4dGAgYW5kIGBQeUVycjo6Y29udGV4dGAuIFsjJiM4MjAzOzU4ODddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODg3KQotIEFkZCBhIHNtYWxsIENMSSB0byBgcHlvMy1pbnRyb3NwZWN0aW9uYCB0byBnZW5lcmF0ZSBzdHVicy4gWyMmIzgyMDM7NTkwNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU5MDQpCi0gQWRkIGBQeXRob246OnZlcnNpb25fc3RyYC4gWyMmIzgyMDM7NTkyMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU5MjEpCi0gQWRkIGBUcnlGcm9tPCZCb3VuZDxUPj5gIGZvciBgUHlSZWY8VD5gLCBgUHlSZWZNdXQ8VD5gLCBgUHlDbGFzc0d1YXJkPFQ+YCBhbmQgYFB5Q2xhc3NHdWFyZE11dDxUPmAuIFsjJiM4MjAzOzU5MjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTIyKQotIEFkZCBgRnJvbTwmQm91bmQ8VD4+YCBmb3IgYEJvdW5kPFQ+YCBhbmQgYFB5PFQ+YCBbIyYjODIwMzs1OTIyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTkyMikKLSBBZGQgYFB5RGljdE1ldGhvZHM6OnNldF9kZWZhdWx0YCBhbmQgYFB5RGljdE1ldGhvZHM6OnNldF9kZWZhdWx0X3JlZmAgdG8gYWxsb3cgYXRvbWljYWxseSBzZXR0aW5nIGRlZmF1bHQgdmFsdWVzIGluIGEgUHlEaWN0LiBbIyYjODIwMzs1OTU1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk1NSkKLSBhZGQgYFB5RnJhbWVNZXRob2RzOjpvdXRlcnxjb2RlfHZhcnxidWlsdGluc3xnbG9iYWxzfGxvY2Fsc2AuIFsjJiM4MjAzOzU5NjddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTY3KQotIEFkZCBgRnJvbWAgY29udmVyc2lvbnMgZm9yIGBQeUVycmAgZnJvbSBgc3RkOjp0aW1lOjpUcnlGcm9tRmxvYXRTZWNzRXJyb3JgLCBgc3RkOjp0aW1lOjpTeXN0ZW1UaW1lRXJyb3JgLCBgc3RkOjpwYXRoOjpTdHJpcFByZWZpeEVycm9yYCwgYHN0ZDo6ZW52OjpKb2luUGF0aHNFcnJvcmAsIGBzdGQ6OmNoYXI6OlBhcnNlQ2hhckVycm9yYCwgYW5kIGBzdGQ6OmNoYXI6OkNoYXJUcnlGcm9tRXJyb3JgLiBbIyYjODIwMzs2MDAxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjAwMSkKLSBBZGQgYHB5bzNfYnVpbGRfY29uZmlnOjpJbnRlcnByZXRlckNvbmZpZ0J1aWxkZXJgLiBbIyYjODIwMzs2MDM0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjAzNCkKLSBBZGQgYFB5Q2Fwc3VsZTo6aW1wb3J0X3BvaW50ZXJgIFsjJiM4MjAzOzYwNjZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDY2KQotIEFkZCBgUHlDbGFzc0d1YXJkTWFwTXV0YC4gWyMmIzgyMDM7NjA3M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwNzMpCi0gRXhwb3NlIGBQeUxpc3RNZXRob2RzOjpnZXRfaXRlbV91bmNoZWNrZWRgLCBgUHlUdXBsZU1ldGhvZHM6OmdldF9pdGVtX3VuY2hlY2tlZGAsIGFuZCBgUHlUdXBsZU1ldGhvZHM6OmdldF9ib3Jyb3dlZF9pdGVtX3VuY2hlY2tlZGAgb24gYWJpMy4gWyMmIzgyMDM7NjA3NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwNzUpCi0gQWRkIGBQeUNsYXNzR3VhcmRNYXBTdXBlcmAuIFsjJiM4MjAzOzYxMDRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MTA0KQotIEFkZCBgUHlDbGFzc0d1YXJkYCBhbmQgYFB5Q2xhc3NHdWFyZE11dGAgdG8gYHB5bzM6OnByZWx1ZGVgLiBbIyYjODIwMzs2MTEyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjExMikKLSBBZGQgYERlYnVnYCBpbXBscyBmb3IgYFB5Q2xhc3NHdWFyZGAgYW5kIGBQeUNsYXNzR3VhcmRNdXRgLiBbIyYjODIwMzs2MTEyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjExMikKLSBFbmFibGUgZXh0ZW5kaW5nIGBQeURhdGVUaW1lYCwgYFB5RGF0ZWAsIGBQeVRpbWVgLCBgUHlEZWx0YWAgYW5kIGBQeVR6SW5mb2Agb24gYWJpMyB3aXRoIHB5dGhvbiAzLjEyKy4gWyMmIzgyMDM7NjExNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYxMTUpCi0gRXhwb3NlIGBQeUZ1bmN0aW9uYCBhdmFpbGFibGUgb24gYWJpMy4gWyMmIzgyMDM7NjExN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYxMTcpCi0gRkZJIGRlZmluaXRpb25zOgogIC0gQWRkZWQgRkZJIGRlZmluaXRpb25zIGBQeVVuc3RhYmxlX09iamVjdF9Jc1VuaXF1ZWx5UmVmZXJlbmNlZGAsIGBQeVVuc3RhYmxlX09iamVjdF9Jc1VuaXF1ZWx5UmVmZXJlbmNlZFRlbXBvcmFyeWAsIGBQeVVuc3RhYmxlX0VuYWJsZVRyeUluY3JlZmAsIGFuZCBgUHlVbnN0YWJsZV9UcnlJbmNyZWZgLiBbIyYjODIwMzs1ODI4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTgyOCkKICAtIEFkZCBGRkkgZGVmaW5pdGlvbnMgYGZmaTo6UHlFcnJfR2V0SGFuZGxlZEV4Y2VwdGlvbmAgYW5kIGBmZmk6OlB5RXJyX1NldEhhbmRsZWRFeGNlcHRpb25gLiBbIyYjODIwMzs1ODg3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTg4NykKICAtIEFkZCBGRkkgZGVmaW5pdGlvbiBgUHlfSEFTSF9TSVBIQVNIMTNgLiBbIyYjODIwMzs1ODkxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTg5MSkKICAtIEFkZCBGRkkgZGVmaW5pdGlvbiBgUHlTdHJ1Y3RTZXF1ZW5jZV9Vbm5hbWVkRmllbGRgIGNvbnN0YW50IG9uIFB5dGhvbiAzLjkgYW5kIHVwIChvciAzLjExIHdpdGggYWJpMyBmZWF0dXJlcykuIFsjJiM4MjAzOzU4OTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODkyKQogIC0gQWRkIEZGSSBkZWZpbml0aW9ucyBgUHlVbnN0YWJsZV9JbnRlcnByZXRlckZyYW1lX0dldENvZGVgLCBgUHlVbnN0YWJsZV9JbnRlcnByZXRlckZyYW1lX0dldExhc3RpYCwgYFB5VW5zdGFibGVfSW50ZXJwcmV0ZXJGcmFtZV9HZXRMaW5lYCwgYW5kIGBQeVVuc3RhYmxlX0V4ZWN1dGFibGVLaW5kc2AuIFsjJiM4MjAzOzU5MzJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTMyKQogIC0gQWRkIEZGSSBkZWZpbml0aW9ucyBgUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZWAsIGBQeU1hcnNoYWxfV3JpdGVPYmplY3RUb0ZpbGVgLCBgUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGVgLCBgUHlNYXJzaGFsX1JlYWRTaG9ydEZyb21GaWxlYCwgYFB5TWFyc2hhbF9SZWFkT2JqZWN0RnJvbUZpbGVgLCBhbmQgYFB5TWFyc2hhbF9SZWFkTGFzdE9iamVjdEZyb21GaWxlYC4gWyMmIzgyMDM7NTkzNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU5MzQpCiAgLSBBZGQgRkZJIGRlZmluaXRpb25zIGBQeU9iamVjdF9HZXRBSXRlcmAsIGBQeUFJdGVyX0NoZWNrYCwgYFB5TWFwcGluZ19IYXNLZXlXaXRoRXJyb3JgLCBgUHlNYXBwaW5nX0hhc0tleVN0cmluZ1dpdGhFcnJvcmAsIGBQeU1hcHBpbmdfR2V0T3B0aW9uYWxJdGVtYCwgYFB5TWFwcGluZ19HZXRPcHRpb25hbEl0ZW1TdHJpbmdgLCBgUHlTZXF1ZW5jZV9JVEVNYCwgYFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRWAsIGBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU1gLCBhbmQgYFB5U2VxdWVuY2VfRmFzdF9JVEVNU2AuIFsjJiM4MjAzOzU5NDJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTQyKQogIC0gQWRkIEZGSSBkZWZpbml0aW9uIGBjb21wYXQ6OlB5T2JqZWN0X0hhc0F0dHJXaXRoRXJyb3JgLiBbIyYjODIwMzs1OTQ0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk0NCkKICAtIEFkZCBGRkkgZGVmaW5pdGlvbnMgYFB5RGljdF9TZXREZWZhdWx0YCwgYFB5RGljdF9TZXREZWZhdWx0UmVmYCwgYFB5RGljdF9Db250YWluc1N0cmluZ2AsIGBQeURpY3RfUG9wYCwgYFB5RGljdF9Qb3BTdHJpbmdgLCBgUHlEaWN0X0NsZWFyV2F0Y2hlcmAsIGBQeURpY3RfV2F0Y2hgLCBgUHlEaWN0X1Vud2F0Y2hgLCBhbmQgYFB5RnJvemVuRGljdF9OZXdgLiBbIyYjODIwMzs1OTQ3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk0NykKICAtIEFkZCBGRkkgZGVmaW5pdGlvbnMgYFB5RGF0ZV9Gcm9tRGF0ZWAsIGBQeURhdGVUaW1lX0Zyb21EYXRlQW5kVGltZWAsIGBQeURhdGVUaW1lX0Zyb21EYXRlQW5kVGltZUFuZEZvbGRgLCBgUHlUaW1lX0Zyb21UaW1lYCwgYFB5VGltZV9Gcm9tVGltZUFuZEZvbGRgLCBhbmQgYFB5RGVsdGFfRnJvbURTVWAuIFsjJiM4MjAzOzU5NDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTQ5KQogIC0gQWRkIEZGSSBkZWZpbml0aW9ucyBgUHlEaWN0X1NldERlZmF1bHRSZWZgIGFuZCBgY29tcGF0OjpQeURpY3RfU2V0RGVmYXVsdFJlZmAuIFsjJiM4MjAzOzU5NTVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTU1KQogICAgdmVyc2lvbnMuCiAgLSBBZGQgRkZJIGRlZmluaXRpb25zIGZvciBub24tbGltaXRlZCBBUEkgaGVhZGVyIGBjcHl0aG9uL2J5dGVhcnJheW9iamVjdC5oYC4gWyMmIzgyMDM7NTk2Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU5NjYpCiAgLSBBZGQgRkZJIGRlZmluaXRpb25zIGZvciBub24tbGltaXRlZCBBUEkgdmVyc2lvbiBvZiBgUHlDZWxsT2JqZWN0YCBhbmQgYXNzb2NpYXRlZCBmdW5jdGlvbnMuIFsjJiM4MjAzOzU5NzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTc4KQogIC0gQWRkIEZGSSBkZWZpbml0aW9uIGBQeUVycl9XYXJuRXhwbGljaXRPYmplY3RgLiBbIyYjODIwMzs1OTc5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk3OSkKICAtIEFkZCBGRkkgZGVmaW5pdGlvbiBgUHlUcmFjZWJhY2tPYmplY3RgLiBbIyYjODIwMzs1OTgwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk4MCkKICAtIEFkZCBGRkkgZGVmaW5pdGlvbiBgUHlUdXBsZV9Gcm9tQXJyYXlgIG9uIDMuMTUrLiBbIyYjODIwMzs1OTkwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk5MCkKICAtIEFkZCBGRkkgZGVmaW5pdGlvbnMgZm9yIHRoZSBQRVAgODIwIFB5U2xvdCBDIEFQSS4gWyMmIzgyMDM7NjAxNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwMTQpCiAgLSBBZGQgRkZJIGRlZmluaXRpb25zIGZvciB0aGUgY3JpdGljYWwgc2VjdGlvbiBBUEkgaW4gdGhlIGxpbWl0ZWQgQVBJIG9uIFB5dGhvbiAzLjE1CiAgICBhbmQgbmV3ZXIuIFsjJiM4MjAzOzYwMTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDE0KQogIC0gQWRkIEZGSSBkZWZpbml0aW9ucyBmb3IgW1BFUCA3NTddKGh0dHBzOi8vcGVwcy5weXRob24ub3JnL3BlcC0wNzU3LykgYFB5TG9uZ2AgaW1wb3J0IC8gZXhwb3J0IEFQSSBvbiBQeXRob24gMy4xNCsuIFsjJiM4MjAzOzYwMTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDE2KQogIC0gQWRkIEZGSSBkZWZpbml0aW9ucyBgUHlFdmFsX1NldFByb2ZpbGVBbGxUaHJlYWRzYCBhbmQgYFB5RXZhbF9TZXRUcmFjZUFsbFRocmVhZHNgLiBbIyYjODIwMzs2MDM4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjAzOCkKICAtIEFkZCBGRkkgZGVmaW5pdGlvbiBgUHlfVU5JQ09ERV9UT0RFQ0lNQUxgLiBbIyYjODIwMzs2MDQxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjA0MSkKCiMjIyMjIENoYW5nZWQKCi0gQ2hhbmdlIGV4Y2VwdGlvbiBlbnJpY2htZW50IG9uIGAjW3B5ZnVuY3Rpb25dYCBhcmd1bWVudCBleHRyYWN0aW9uIGVycm9yIHRvIHVzZSBgUHlFcnI6OmFkZF9ub3RlYCBpbnN0ZWFkIG9mIHJlcGxhY2luZyBgVHlwZUVycm9yYCBpbnN0YW5jZXMuIFsjJiM4MjAzOzUzNDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81MzQ5KQotIERlcHJlY2F0ZSBzdXBlci1jbGFzcyBpbml0aWFsaXphdGlvbiB2aWEgdHVwbGVzLiBbIyYjODIwMzs1NzQxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTc0MSkKLSBDaGFuZ2UgbW9kdWxlIGluaXRpYWxpemF0aW9uIHVzZXMgdGhlIFB5TW9kRXhwb3J0IGFuZCBQeUFCSUluZm8gQVBJcyBvbiBQeXRob24gMy4xNSsuIFsjJiM4MjAzOzU3NTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81NzUzKQotIERlcHJlY2F0ZSBgUHk8VD46OmdldF9yZWZjbnRgIGFuZCBgUHlBbnlNZXRob2RzOjpnZXRfcmVmY250YCBpbiBmYXZvciBvZiBgcHlvMzo6ZmZpOjpQeV9SRUZDTlQob2JqLmFzX3B0cigpKWAuIFsjJiM4MjAzOzU3OTddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81Nzk3KQotIENoYW5nZSBgUHlFbnZpcm9ubWVudEVycm9yYCwgYFB5SU9FcnJvcmAsIGFuZCBgUHlXaW5kb3dzRXJyb3JgIHRvIGJlIHR5cGUgYWxpYXNlcyBvZiBgUHlPU0Vycm9yYCAoYXMgaXMgdGhlIGNhc2UgaW4gUHl0aG9uIHNpbmNlIDMuMykuIFsjJiM4MjAzOzU4MDNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODAzKQotIENoYW5nZSBgcHlvM19idWlsZF9jb25maWc6OkludGVycHJldGVyQ29uZmlnOjpmcm9tX2ludGVycHJldGVyYCB0byByZXF1aXJlIGFuIGFkZGl0aW9uYWwgYHN0YWJsZV9hYmlfdmVyc2lvbmAgYXJndW1lbnQuIFRoZSBvbGQgYmVoYXZpb3IgaXMgdGhlIHNhbWUgYXMgcGFzc2luZyBgTm9uZWAuIFsjJiM4MjAzOzU4MDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODA3KQotIENoYW5nZSBgUHlMaXN0OjpuZXdgIHRvIG5vIGxvbmdlciBoYXZlIGBFeGFjdFNpemVJdGVyYXRvcmAgYm91bmQuIFsjJiM4MjAzOzU4MzBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODMwKQotIGBleHBlcmltZW50YWwtaW5zcGVjdGA6IGVtaXQgYCNbY2xhc3NhdHRyaWJ1dGVdYCBhcyBwbGFpbiBQeXRob24gY2xhc3MgYXR0cmlidXRlcyBhbmQgbm90IGZ1bmN0aW9ucyBhbm5vdGF0ZWQgd2l0aCBgQGNsYXNzYXR0cmlidXRlYCBhbmQgYEBwcm9wZXJ0eWAuIFsjJiM4MjAzOzU4MzldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODM5KQotIGBleHBlcmltZW50YWwtaW5zcGVjdGA6IHVzZSBgb2JqZWN0YCBhcyB0aGUgaW5wdXQgYW5ub3RhdGlvbiB0eXBlIG9mIG1hZ2ljIG1ldGhvZHMgdGhhdCByZXR1cm4gYE5vbkltcGxlbWVudGVkYCBpZiB0aGUgaW5wdXQgdmFsdWUgaXMgbm90IG9mIHRoZSBjb3JyZWN0IHR5cGUuIFsjJiM4MjAzOzU4NDFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODQxKQotIERlcHJlY2F0ZSBgcHlvMy1idWlsZC1jb25maWcvcmVzb2x2ZS1jb25maWdgIGZlYXR1cmUuIFsjJiM4MjAzOzU4NjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODYyKQotIENoYW5nZSBgcHlvMy1mZmlgIHRvIHVzZSByYXctZHlsaWIgZm9yIFdpbmRvd3MgbGlua2luZy4gWyMmIzgyMDM7NTg2Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU4NjYpCi0gRGVwcmVjYXRlIGBnZW5lcmF0ZS1pbXBvcnQtbGliYCBmZWF0dXJlLiBbIyYjODIwMzs1ODY2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTg2NikKLSBBbGxvdyB6ZXJvLXNpemVkIHR5cGVzIGluIGBQeUNhcHN1bGU6Om5ld2AuIFsjJiM4MjAzOzU4ODldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODg5KQotIGBQeURhdGU6OmZyb21fdGltZXN0YW1wYCBhcmd1bWVudCBpcyBub3cgYSBgZjY0YCAodGhlIFB5dGhvbiBBUEkgZXhwZWN0cyBhIGZsb2F0IGFuZCBub3QgYW4gaW50ZWdlcikgWyMmIzgyMDM7NTg5Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU4OTYpCi0gYGV4cGVyaW1lbnRhbC1pbnNwZWN0YDogQ2hhbmdlIGBQYXRoQnVmOjpleHRyYWN0YCBpbnB1dCB0eXBlIGhpbnQgZnJvbSBgc3RyIHwgb3MuUGF0aExpa2VgIHRvIGBzdHIgfCBvcy5QYXRoTGlrZVtzdHJdYCBbIyYjODIwMzs1ODk3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTg5NykKLSBSZW1vdmUgbGlmZXRpbWUgZnJvbSBgUHl0aG9uVmVyc2lvbkluZm9gLiBbIyYjODIwMzs1OTIxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTkyMSkKLSBSZW1vdmUgcmVkdW5kYW50IHR5cGUgY2hlY2tzIGZvciBtZXRob2RzIHdoZXJlIENQeXRob24gZ3VhcmFudGVlcyB0aGUgdHlwZSBvZiBgc2VsZmAuIFsjJiM4MjAzOzU5MzBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTMwKQotIEVsaWRlIHRlbXBvcmFyeSByZWZlcmVuY2UgY291bnQgY3ljbGVzIGluc2lkZSBgUHlBbnlNZXRob2RzOjpjYWxsYCwgYFB5QW55TWV0aG9kczo6Y2FsbDFgIGFuZCBgUHlBbnlNZXRob2RzOjpjYWxsX21ldGhvZDFgIGZvciBhcmd1bWVudHMgcGFzc2VkIGFzIFJ1c3QgdHVwbGVzIGNvbnRhaW5pbmcgYm9ycm93ZWQgcmVmZXJlbmNlcyB0byBQeXRob24gb2JqZWN0cy4gWyMmIzgyMDM7NTk0MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU5NDEpCi0gQWxsb3cgdHlwZSBhbm5vdGF0aW9ucyB0byBiZSB1c2VkIGluIGAjW3B5bzMoc2lnbmF0dXJlID0gLi4uKV1gIHdoZW4gYGV4cGVyaW1lbnRhbC1pbnNwZWN0YCBmZWF0dXJlIGlzIG5vdCBlbmFibGVkICh0aGV5IHdpbGwgYmUgaWdub3JlZCkuIFsjJiM4MjAzOzU5OTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTk5KQotIGBweW8zLWZmaWAgd2lsbCBub3cgcmVidWlsZCB3aGVuIHRoZSBQeXRob24gdmlydHVhbCBlbnZpcm9ubWVudCBjaGFuZ2VzIGluLXBsYWNlLiBbIyYjODIwMzs2MDA4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjAwOCkKLSBDaGFuZ2UgbW9kdWxlIGluaXRpYWxpemF0aW9uIG9uIDMuMTUrIHRvIHVzZSBQRVAgODIwIFB5U2xvdCBBUEkgaW50ZXJuYWxseS4gWyMmIzgyMDM7NjAxNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwMTQpCi0gRGVwcmVjYXRlIGRpcmVjdCBhY2Nlc3MgdG8gYWxsIGBweW8zX2J1aWxkX2NvbmZpZzo6SW50ZXJwcmV0ZXJDb25maWdgIGZpZWxkczsgZ2V0dGVyIG1ldGhvZHMgaGF2ZSBiZWVuIGFkZGVkIGFzIHJlcGxhY2VtZW50cy4gWyMmIzgyMDM7NjAzNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwMzQpCi0gRkZJIGRlZmluaXRpb25zIGBfUHlDb2RlX0dldEV4dHJhYCwgYF9QeUNvZGVfU2V0RXh0cmFgLCBhbmQgYF9QeUV2YWxfUmVxdWVzdENvZGVFeHRyYUluZGV4YCBoYXZlIGJlZW4gdXBkYXRlZCB0byBgUHlVbnN0YWJsZV9Db2RlX0dldEV4dHJhYCwgYFB5VW5zdGFibGVfQ29kZV9TZXRFeHRyYWAsIGFuZCBgUHlVbnN0YWJsZV9FdmFsX1JlcXVlc3RDb2RlRXh0cmFJbmRleGAuIFsjJiM4MjAzOzYwMzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDM4KQotIENoYW5nZSBgUHlDYXBzdWxlOjppbXBvcnRgIHRvIHJldHVybiBhbiBlcnJvciBpZiB0aGUgcG9pbnRlciBpcyBub3QgcHJvcGVybHkgYWxpZ25lZC4gWyMmIzgyMDM7NjA2Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwNjYpCi0gQ2hhbmdlIGBQeUNsYXNzR3VhcmRNYXBgIHRvIGJlIG9ubHkgZm9yIGBQeUNsYXNzR3VhcmQ6Om1hcGAgYW5kIHJldHVybiBgUHlDbGFzc0d1YXJkTWFwTXV0YCBmcm9tIGBQeUNsYXNzR3VhcmRNdXQ6Om1hcGAuIFsjJiM4MjAzOzYwNzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDczKQotIENoYW5nZSBgd2l0aF9jcml0aWNhbF9zZWN0aW9uX211dGV4MmAgY2xvc3VyZSB0byB0YWtlIGBPcHRpb248RW50ZXJlZENyaXRpY2FsU2VjdGlvbj5gIGluc3RlYWQgb2YgYEVudGVyZWRDcml0aWNhbFNlY3Rpb25gIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuIFsjJiM4MjAzOzYwOThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDk4KQotIGBQeUNsYXNzR3VhcmRNdXQ6OmFzX3N1cGVyYCBub3cgcmV0dXJucyBgUHlDbGFzc0d1YXJkTXV0U3VwZXJgLiBbIyYjODIwMzs2MTA0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjEwNCkKLSBgZXhwZXJpbWVudGFsLWluc3BlY3RgOiBHZW5lcmF0ZSByZWxhdGl2ZSBpbXBvcnRzIGluc3RlYWQgb2YgYWJzb2x1dGUgb25lcyAodXNlZnVsIGlmIHRoZSBzdHVicyBhcmUgbm90IGRlc2NyaWJpbmcgYSByb290IHBhY2thZ2UpIFsjJiM4MjAzOzYwOTddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDk3KQoKIyMjIyMgUmVtb3ZlZAoKLSBSZW1vdmVkIHRoZSBicm9rZW4gKGFuZCB1bmZpeGFibGUpIGltcGxlbWVudGF0aW9ucyBvZiBgRnJvbTxzdHI6OlV0ZjhFcnJvcj5gLCBgRnJvbTxzdHJpbmc6OkZyb21VdGYxNkVycm9yPmAsIGFuZCBgRnJvbTxjaGFyOjpEZWNvZGVVdGYxNkVycm9yPmAgZm9yIGBQeUVycmAuIFsjJiM4MjAzOzU2NjhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81NjY4KQotIFJlbW92ZSBgUHlfVFJBQ0VfUkVGU2Agc3VwcG9ydCAodW5zdXBwb3J0ZWQgZnJvbSBQeXRob24gMy4xMykuIFsjJiM4MjAzOzU4MjRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODI0KQotIGBleHBlcmltZW50YWwtaW5zcGVjdGA6IFJlbW92ZSB0aGUgYFR5cGVJbmZvYCBlbnVtIGFuZCB0aGUgYEZyb21QeU9iamVjdDo6dHlwZV9pbnB1dGAgYW5kIGBJbnRvUHlPYmplY3Q6OnR5cGVfb3V0cHV0YCBmdW5jdGlvbnMuIFRoZXkgYXJlIHJlcGxhY2VkIGJ5IHRoZSBgUHlTdGF0aWNFeHByYCBlbnVtIGFuZCB0aGUgYEZyb21QeU9iamVjdDo6SU5QVVRfVFlQRWAgYW5kIHRoZSBgSW50b1B5T2JqZWN0OjpPVVRQVVRfVFlQRWAgYXNzb2NpYXRlZCBjb25zdGFudHMuIFsjJiM4MjAzOzU4OTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODkzKQotIFJlbW92ZSBhbGwgZnVuY3Rpb25hbGl0eSBkZXByZWNhdGVkIGluIFB5TzMgMC4yNy4gWyMmIzgyMDM7NjA2OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwNjgpCi0gRkZJIGRlZmluaXRpb25zOgogIC0gUmVtb3ZlIHByaXZhdGUgRkZJIGRlZmluaXRpb25zIGBfUHlTdGFja19Bc0RpY3RgLCBgX1B5T2JqZWN0X0NhbGxOb0FyZ2AsIGBfUHlPYmplY3RfRmFzdENhbGxgLCBgX1B5T2JqZWN0X0Zhc3RDYWxsVHN0YXRlYC4gYF9QeU9iamVjdF9WZWN0b3JjYWxsVHN0YXRlYCwgYF9QeU9iamVjdF9NYWtlVHBDYWxsYCwgYF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0YCwgYF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVRgLCBgX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVRgLCBhbmQgYF9QeVNlcXVlbmNlX0l0ZXJTZWFyY2hgLiBbIyYjODIwMzs1OTQyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk0MikKICAtIFJlbW92ZSBGRkkgZGVmaW5pdGlvbnMgYFBZX0lURVJTRUFSQ0hfQ09VTlRgLCBgUFlfSVRFUlNFQVJDSF9JTkRFWGAsIGFuZCBgUFlfSVRFUlNFQVJDSF9DT05UQUlOU2AuIFsjJiM4MjAzOzU5NDJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTQyKQogIC0gUmVtb3ZlZCBwcml2YXRlIEZGSSBkZWZpbml0aW9ucyBgX1B5U2V0X05leHRFbnRyeWAsIGFuZCBgX1B5TG9uZ19OdW1CaXRzYC4gWyMmIzgyMDM7NTk0Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU5NDYpCiAgLSBSZW1vdmUgcHJpdmF0ZSBGRkkgZGVmaW5pdGlvbnMgYF9QeUZsb2F0X0NBU1RgLCBgX1B5UnVuX1NpbXBsZUZpbGVPYmplY3RgLCBgX1B5UnVuX0FueUZpbGVPYmplY3RgLCBgX1B5UnVuX0ludGVyYWN0aXZlTG9vcE9iamVjdGAsIGBfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3lgLCBgX1B5VW5pY29kZV9DT01QQUNUX0RBVEFgLCBgX1B5VW5pY29kZV9OT05DT01QQUNUX0RBVEFgLCBgX1B5VW5pY29kZV9SZWFkeWAsIGFuZCBgX1B5X0hhc2hCeXRlc2AuIFsjJiM4MjAzOzYwMzZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDM2KQogIC0gUmVtb3ZlIHByaXZhdGUgRkZJIGRlZmluaXRpb24gYF9QeUV2YWxfRXZhbEZyYW1lRGVmYXVsdGAuIFsjJiM4MjAzOzYwMzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDM4KQogIC0gUmVtb3ZlIHByaXZhdGUgRkZJIGRlZmluaXRpb24gYF9QeUJ5dGVzX1Jlc2l6ZWAuIFsjJiM4MjAzOzYwNDJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDQyKQogIC0gUmVtb3ZlIHByaXZhdGUgRkZJIGRlZmluaXRpb25zIGBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsYCwgYF9QeV9HZXRBbGxvY2F0ZWRCbG9ja3NgLCBgX1B5T2JqZWN0X0dDX01hbGxvY2AsIGBfUHlPYmplY3RfR0NfQ2FsbG9jYCwgYW5kIGBfUHlMb25nX051bUJpdHNgLiBbIyYjODIwMzs2MDUzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjA1MykKICAtIFJlbW92ZSBgRGVmYXVsdGAgZm9yIEZGSSBkZWZpbml0aW9ucyBgUHlIZWFwVHlwZU9iamVjdGAsIGBQeU9iamVjdEFyZW5hQWxsb2NhdG9yYCwgYFB5SGFzaF9GdW5jRGVmYCwgYW5kIGBQeVR5cGVfU3BlY2AuIFsjJiM4MjAzOzYwOTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDkzKQoKIyMjIyMgRml4ZWQKCi0gRml4IGBhZGRfbGlicHl0aG9uX3JwYXRoX2xpbmtfYXJnc2AgZW1pdHRpbmcgcnBhdGggbGluayBhcmdzIG9uIHdhc20gdGFyZ2V0cyB3aGljaCBkb24ndCBzdXBwb3J0IHJwYXRoLiBbIyYjODIwMzs1NDQ3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTQ0NykKLSBGaXggYEZyb208c3RyaW5nOjpGcm9tVXRmOEVycm9yPmAgYW5kIGBGcm9tPGZmaTo6SW50b1N0cmluZ0Vycm9yPmAgZm9yIGBQeUVycmAgcHJvZHVjaW5nIGBUeXBlRXJyb3JgIGR1ZSB0byBicm9rZW4gaW50ZXJuYWxzLiBbIyYjODIwMzs1NjY4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTY2OCkKLSBGaXggYFB5TWFwcGluZ1Byb3h5Ojppc190eXBlX29mYCBhbmQgYFB5V2Vha3JlZlJlZmVyZW5jZTo6aXNfdHlwZV9vZmAgbm90IGFjY2VwdGluZyBzdWJjbGFzc2VzLiBbIyYjODIwMzs1ODgzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTg4MykKLSBGaXggYGdldGF0dHJfb3B0YCBub3QgdHJlYXRpbmcgYEF0dHJpYnV0ZUVycm9yYCBzdWJjbGFzc2VzIGFzIG1pc3NpbmcgYXR0cmlidXRlcyBvbiBQeXRob24gPCAzLjEzLiBbIyYjODIwMzs1OTg1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk4NSkKLSBGaXggY29tcGlsYXRpb24gZXJyb3IgZm9yIGAjW25ld11gIHJldHVybiB0eXBlcyB0aGF0IGNvbnRhaW4gbmFtZWQgbGlmZXRpbWVzLiBbIyYjODIwMzs1OTk4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk5OCkKLSBGaXggbWlzc2luZyBgJ3N0YXRpY2AgYm91bmQgb24gYFB5Q2Fwc3VsZWAgZGVzdHJ1Y3RvcnMuIFsjJiM4MjAzOzYwNDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDQ5KQotIEZpeCBjYXNlIHdoZXJlIGBQeUZyYW1lOjpidWlsdGluc2AgY291bGQgcmV0dXJuIGEgbm9uLWRpY3Qgb2JqZWN0LiBbIyYjODIwMzs2MDUyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjA1MikKLSBGaXggdHlwZSBjb25mdXNpb24gd2hlbiByZXR1cm5pbmcgYSBgI1tweWNsYXNzXWAgZnJvbSBhIGRpZmZlcmVudCBweWNsYXNzJyBgI1tuZXddYCBtZXRob2QuIFsjJiM4MjAzOzYwNjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDYyKQotIEZpeCBzb3VuZG5lc3MgaXNzdWUgY2F1c2VkIGJ5IHZhcmlhbmNlIGluIGBQeUNsYXNzR3VhcmRNYXBgIGJ5IHNwbGl0dGluZyBvZmYgdGhlIG11dGFibGUgdmFyaWFudC4gWyMmIzgyMDM7NjA3M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwNzMpCi0gRml4IG5vbmRldGVybWluaXN0aWMgSlNPTiBtZXRhZGF0YSBlbWl0dGVkIGJ5IHRoZSBgZXhwZXJpbWVudGFsLWluc3BlY3RgIHByb2MgbWFjcm9zICh0byBlbmFibGUgcmVwcm9kdWNpYmxlIGJ1aWxkcykuIFsjJiM4MjAzOzYwNzZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDc2KQotIEZpeCBVQiBpbiBgUHlFdmFsX1Jlc3RvcmVUaHJlYWRgIHdoZW4gdGhlIGludGVycHJldGVyIGlzIHNodXR0aW5nIGRvd24gb24gUHl0aG9uIDMuMTMgYW5kIG9sZGVyIChoYW5nIHRoZSB0aHJlYWQgaW5zdGVhZCBvZiBhbGxvd2luZyBgcHRocmVhZF9leGl0YCB0byBqdW1wIGFjcm9zcyBSdXN0IGZyYW1lcykuIFsjJiM4MjAzOzYwODVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDg1KQotIEZpeCBwb3NzaWJsZSBvdXQgb2YgYm91bmRzIHJlYWQgaW4gYEJvdW5kTGlzdEl0ZXJhdG9yYCBhbmQgYEJvdW5kVHVwbGVJdGVyYXRvcmAncyBgbnRoYCBhbmQgYG50aF9iYWNrYCBpbXBsZW1lbnRhdGlvbnMuIFsjJiM4MjAzOzYwODZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDg2KQotIEZpeCBgQm91bmRMaXN0SXRlcmF0b3JgIGFuZCBgQm91bmRUdXBsZUl0ZXJhdG9yYCBub3QgYmVpbmcgZXhoYXVzdGVkIHdoZW4gYG50aGAgb3IgYG50aF9iYWNrYCBpcyBjYWxsZWQgd2l0aCBOIGxhcmdlciB0aGFuIHRoZSByZW1haW5pbmcgY291bnQgb2YgaXRlbXMuIFsjJiM4MjAzOzYwODZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDg2KQotIEZpeCBtaXNzaW5nIGBTeW5jYCBib3VuZCBvbiBjbG9zdXJlIHR5cGUgaW4gYFB5Q0Z1bmN0aW9uOjpuZXdfY2xvc3VyZWAuIFsjJiM4MjAzOzYwOTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDk2KQotIEZpeCBzb3VuZG5lc3MgaXNzdWUgY2F1c2VkIGJ5IGV4cG9zaW5nIGEgbXV0YWJsZSByZWZlcmVuY2UgZnJvbSBgUHlDbGFzc0d1YXJkTXV0Ojphc19zdXBlcmAgYnkgbW92aW5nIGludG8gYFB5Q2xhc3NHdWFyZE11dFN1cGVyYC4gWyMmIzgyMDM7NjEwNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYxMDQpCi0gRkZJIGRlZmluaXRpb25zOgogIC0gRml4IG1pc3NpbmcgRkZJIGRlZmluaXRpb24gZm9yIGBQeVR5cGVPYmplY3QudHBfdmVyc2lvbnNfdXNlZGAgb24gUHl0aG9uIDMuMTMgYW5kIG5ld2VyLiBbIyYjODIwMzs1OTE3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTkxNykKICAtIE1hcmsgRkZJIGRlZmluaXRpb25zIG5vIGxvbmdlciBhdmFpbGFibGUgb24gMy4xMSBhbmQgdXA6IGBQeVVuaWNvZGVfRW5jb2RlYCwgYFB5VW5pY29kZV9FbmNvZGVBU0NJSWAsIGBQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcGAsIGBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbGAsIGBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xYCwgYFB5VW5pY29kZV9FbmNvZGVSYXdVbmljb2RlRXNjYXBlYCwgYFB5VW5pY29kZV9FbmNvZGVVVEY3YCwgYFB5VW5pY29kZV9FbmNvZGVVVEY4YCwgYFB5VW5pY29kZV9FbmNvZGVVVEYxNmAsIGBQeVVuaWNvZGVfRW5jb2RlVVRGMzJgLCBgUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGVgLCBgUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJYCwgYW5kIGBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcGAuIFsjJiM4MjAzOzYwNDFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDQxKQogIC0gTWFyayBGRkkgZGVmaW5pdGlvbiBgUHlVbmljb2RlX0NsZWFyRnJlZUxpc3RgIG5vIGxvbmdlciBhdmFpbGFibGUgb24gMy45IGFuZCB1cC4gWyMmIzgyMDM7NjA0MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwNDEpCiAgLSBGaXggRkZJIGRlZmluaXRpb24gYFB5RXJyX1NldEludGVycnVwdEV4YCBtaXNzaW5nIGBjX2ludGAgcmV0dXJuIHR5cGUuIFsjJiM4MjAzOzYwNDNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDQzKQogIC0gRml4IHJldHVybiB0eXBlIG9mIEZGSSBkZWZpbml0aW9uIGBQeUJ1ZmZlcl9TaXplRnJvbUZvcm1hdGAgb24gUHl0aG9uIDMuOCAod2FzIGNoYW5nZWQgZnJvbSBgY19pbnRgIHRvIGBQeV9zc2l6ZV90YCBvbiBQeXRob24gMy45KS4gWyMmIzgyMDM7NjA5MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwOTApCiAgLSBGaXggcmV0dXJuIHR5cGUgb2YgRkZJIGRlZmluaXRpb24gYFB5VW5pY29kZV9UYWlsbWF0Y2hgIG9uIFB5UHkgKGlzIGBjX2ludGAsIHVubGlrZSBDUHl0aG9uKS4gWyMmIzgyMDM7NjA5MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwOTApCgo8L2RldGFpbHM+CgotLS0KCiMjIyBDb25maWd1cmF0aW9uCgrwn5OFICoqU2NoZWR1bGUqKjogKFVUQykKCi0gQnJhbmNoIGNyZWF0aW9uCiAgLSBBdCBhbnkgdGltZSAobm8gc2NoZWR1bGUgZGVmaW5lZCkKLSBBdXRvbWVyZ2UKICAtIEF0IGFueSB0aW1lIChubyBzY2hlZHVsZSBkZWZpbmVkKQoK8J+apiAqKkF1dG9tZXJnZSoqOiBEaXNhYmxlZCBieSBjb25maWcuIFBsZWFzZSBtZXJnZSB0aGlzIG1hbnVhbGx5IG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQuCgrimbsgKipSZWJhc2luZyoqOiBXaGVuZXZlciBQUiBpcyBiZWhpbmQgYmFzZSBicmFuY2gsIG9yIHlvdSB0aWNrIHRoZSByZWJhc2UvcmV0cnkgY2hlY2tib3guCgrwn5SVICoqSWdub3JlKio6IENsb3NlIHRoaXMgUFIgYW5kIHlvdSB3b24ndCBiZSByZW1pbmRlZCBhYm91dCB0aGlzIHVwZGF0ZSBhZ2Fpbi4KCi0tLQoKIC0gWyBdIDwhLS0gcmViYXNlLWNoZWNrIC0tPklmIHlvdSB3YW50IHRvIHJlYmFzZS9yZXRyeSB0aGlzIFBSLCBjaGVjayB0aGlzIGJveAoKLS0tCgpUaGlzIFBSIHdhcyBnZW5lcmF0ZWQgYnkgW01lbmQgUmVub3ZhdGVdKGh0dHBzOi8vbWVuZC5pby9yZW5vdmF0ZS8pLiBWaWV3IHRoZSBbcmVwb3NpdG9yeSBqb2IgbG9nXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2dpdGh1Yi92ZXh4aG9zdC9tYWdudW0tY2x1c3Rlci1hcGkpLgo8IS0tcmVub3ZhdGUtZGVidWc6ZXlKamNtVmhkR1ZrU1c1V1pYSWlPaUkwTXk0eU1Ua3VNQ0lzSW5Wd1pHRjBaV1JKYmxabGNpSTZJalF6TGpJeE9TNHdJaXdpZEdGeVoyVjBRbkpoYm1Ob0lqb2liV0ZwYmlJc0lteGhZbVZzY3lJNlcxMTktLT4K
      override_checkout: master
      patchset: 4f0bcdb52f72f823ef028f1ce92928ed64050767
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/vexxhost/zuul-config:
            canonical_name: github.com/vexxhost/zuul-config
            checkout: main
            commit: 298983cd1253e6833abdb49d87d912527e0e6597
          trusted/project_1/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: 82e3e8b1292a25e38235bb92b157992d326531d1
          trusted/project_2/github.com/vexxhost/zuul-jobs:
            canonical_name: github.com/vexxhost/zuul-jobs
            checkout: main
            commit: 348c7ff425450b0356e1d84589143dce260be74a
          untrusted/project_0/opendev.org/openstack/devstack:
            canonical_name: opendev.org/openstack/devstack
            checkout: master
            commit: 37fb911deef99dce62bfce22cce767b821a23bb1
          untrusted/project_1/opendev.org/openstack/openstack-zuul-jobs:
            canonical_name: opendev.org/openstack/openstack-zuul-jobs
            checkout: master
            commit: fd9e34d76181633827d5705dc02fadb789fe3bf7
          untrusted/project_2/github.com/vexxhost/zuul-config:
            canonical_name: github.com/vexxhost/zuul-config
            checkout: main
            commit: 298983cd1253e6833abdb49d87d912527e0e6597
          untrusted/project_3/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: 82e3e8b1292a25e38235bb92b157992d326531d1
          untrusted/project_4/github.com/vexxhost/zuul-jobs:
            canonical_name: github.com/vexxhost/zuul-jobs
            checkout: main
            commit: 348c7ff425450b0356e1d84589143dce260be74a
          untrusted/project_5/github.com/vexxhost/magnum-cluster-api:
            canonical_name: github.com/vexxhost/magnum-cluster-api
            checkout: main
            commit: 4f0bcdb52f72f823ef028f1ce92928ed64050767
        playbooks:
        - path: untrusted/project_5/github.com/vexxhost/magnum-cluster-api/zuul.d/playbooks/hydrophone/run.yml
          roles:
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/playbook_0/role_1/devstack
            link_target: untrusted/project_0/opendev.org/openstack/devstack
            role_path: ansible/playbook_0/role_1/devstack/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/playbook_0/role_2/openstack-zuul-jobs
            link_target: untrusted/project_1/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/playbook_0/role_2/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/playbook_0/role_4/zuul-jobs
            link_target: untrusted/project_3/opendev.org/zuul/zuul-jobs
            role_path: ansible/playbook_0/role_4/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_5/zuul-jobs
            link_target: untrusted/project_4/github.com/vexxhost/zuul-jobs
            role_path: ansible/playbook_0/role_5/zuul-jobs/roles
        post_playbooks:
        - path: untrusted/project_5/github.com/vexxhost/magnum-cluster-api/zuul.d/playbooks/hydrophone/post.yml
          roles:
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/post_playbook_0/role_1/devstack
            link_target: untrusted/project_0/opendev.org/openstack/devstack
            role_path: ansible/post_playbook_0/role_1/devstack/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/post_playbook_0/role_2/openstack-zuul-jobs
            link_target: untrusted/project_1/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/post_playbook_0/role_2/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/post_playbook_0/role_4/zuul-jobs
            link_target: untrusted/project_3/opendev.org/zuul/zuul-jobs
            role_path: ansible/post_playbook_0/role_4/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/post_playbook_0/role_5/zuul-jobs
            link_target: untrusted/project_4/github.com/vexxhost/zuul-jobs
            role_path: ansible/post_playbook_0/role_5/zuul-jobs/roles
        - path: untrusted/project_0/opendev.org/openstack/devstack/playbooks/post.yaml
          roles:
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/post_playbook_1/role_0/devstack
            link_target: untrusted/project_0/opendev.org/openstack/devstack
            role_path: ansible/post_playbook_1/role_0/devstack/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/post_playbook_1/role_1/openstack-zuul-jobs
            link_target: untrusted/project_1/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/post_playbook_1/role_1/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/post_playbook_1/role_3/zuul-jobs
            link_target: untrusted/project_3/opendev.org/zuul/zuul-jobs
            role_path: ansible/post_playbook_1/role_3/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/post_playbook_1/role_4/zuul-jobs
            link_target: untrusted/project_4/github.com/vexxhost/zuul-jobs
            role_path: ansible/post_playbook_1/role_4/zuul-jobs/roles
        - path: trusted/project_0/github.com/vexxhost/zuul-config/playbooks/base/post.yaml
          roles:
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/post_playbook_2/role_1/zuul-jobs
            link_target: trusted/project_1/opendev.org/zuul/zuul-jobs
            role_path: ansible/post_playbook_2/role_1/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/post_playbook_2/role_2/zuul-jobs
            link_target: trusted/project_2/github.com/vexxhost/zuul-jobs
            role_path: ansible/post_playbook_2/role_2/zuul-jobs/roles
        - path: trusted/project_0/github.com/vexxhost/zuul-config/playbooks/base/post-logs.yaml
          roles:
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/post_playbook_3/role_1/zuul-jobs
            link_target: trusted/project_1/opendev.org/zuul/zuul-jobs
            role_path: ansible/post_playbook_3/role_1/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/post_playbook_3/role_2/zuul-jobs
            link_target: trusted/project_2/github.com/vexxhost/zuul-jobs
            role_path: ansible/post_playbook_3/role_2/zuul-jobs/roles
        pre_playbooks:
        - path: trusted/project_0/github.com/vexxhost/zuul-config/playbooks/base/pre.yaml
          roles:
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/pre_playbook_0/role_1/zuul-jobs
            link_target: trusted/project_1/opendev.org/zuul/zuul-jobs
            role_path: ansible/pre_playbook_0/role_1/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_0/role_2/zuul-jobs
            link_target: trusted/project_2/github.com/vexxhost/zuul-jobs
            role_path: ansible/pre_playbook_0/role_2/zuul-jobs/roles
        - path: untrusted/project_0/opendev.org/openstack/devstack/playbooks/pre.yaml
          roles:
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/pre_playbook_1/role_0/devstack
            link_target: untrusted/project_0/opendev.org/openstack/devstack
            role_path: ansible/pre_playbook_1/role_0/devstack/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/pre_playbook_1/role_1/openstack-zuul-jobs
            link_target: untrusted/project_1/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/pre_playbook_1/role_1/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/pre_playbook_1/role_3/zuul-jobs
            link_target: untrusted/project_3/opendev.org/zuul/zuul-jobs
            role_path: ansible/pre_playbook_1/role_3/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_1/role_4/zuul-jobs
            link_target: untrusted/project_4/github.com/vexxhost/zuul-jobs
            role_path: ansible/pre_playbook_1/role_4/zuul-jobs/roles
        - path: untrusted/project_5/github.com/vexxhost/magnum-cluster-api/zuul.d/playbooks/hydrophone/pre.yml
          roles:
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/pre_playbook_2/role_1/devstack
            link_target: untrusted/project_0/opendev.org/openstack/devstack
            role_path: ansible/pre_playbook_2/role_1/devstack/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/pre_playbook_2/role_2/openstack-zuul-jobs
            link_target: untrusted/project_1/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/pre_playbook_2/role_2/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/pre_playbook_2/role_4/zuul-jobs
            link_target: untrusted/project_3/opendev.org/zuul/zuul-jobs
            role_path: ansible/pre_playbook_2/role_4/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_2/role_5/zuul-jobs
            link_target: untrusted/project_4/github.com/vexxhost/zuul-jobs
            role_path: ansible/pre_playbook_2/role_5/zuul-jobs/roles
      post_review: false
      post_timeout: null
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/vexxhost/magnum-cluster-api
        name: vexxhost/magnum-cluster-api
        short_name: magnum-cluster-api
        src_dir: src/github.com/vexxhost/magnum-cluster-api
      projects:
        github.com/novnc/novnc:
          canonical_hostname: github.com
          canonical_name: github.com/novnc/novnc
          checkout: master
          checkout_description: job override ref
          commit: 7c36fabe599e053c5a81e98e091ac636f6c1e174
          name: novnc/novnc
          required: true
          short_name: novnc
          src_dir: src/github.com/novnc/novnc
        github.com/vexxhost/magnum-cluster-api:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/magnum-cluster-api
          checkout: main
          checkout_description: zuul branch
          commit: 4f0bcdb52f72f823ef028f1ce92928ed64050767
          name: vexxhost/magnum-cluster-api
          required: false
          short_name: magnum-cluster-api
          src_dir: src/github.com/vexxhost/magnum-cluster-api
        opendev.org/openstack/barbican:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/barbican
          checkout: master
          checkout_description: job override ref
          commit: a9b738f9c21e41c123e60dfe02888477c9886603
          name: openstack/barbican
          required: true
          short_name: barbican
          src_dir: src/opendev.org/openstack/barbican
        opendev.org/openstack/cinder:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/cinder
          checkout: master
          checkout_description: job override ref
          commit: f59cf1c9b974d6ef24e51c4f87b8dff076a7222b
          name: openstack/cinder
          required: true
          short_name: cinder
          src_dir: src/opendev.org/openstack/cinder
        opendev.org/openstack/devstack:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/devstack
          checkout: master
          checkout_description: job override ref
          commit: 37fb911deef99dce62bfce22cce767b821a23bb1
          name: openstack/devstack
          required: true
          short_name: devstack
          src_dir: src/opendev.org/openstack/devstack
        opendev.org/openstack/glance:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/glance
          checkout: master
          checkout_description: job override ref
          commit: edf97a1b5b6790f7e79315a11c3f70cc92553ef8
          name: openstack/glance
          required: true
          short_name: glance
          src_dir: src/opendev.org/openstack/glance
        opendev.org/openstack/keystone:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/keystone
          checkout: master
          checkout_description: job override ref
          commit: 8e78573a95426f194789f7a13e9f298f1133faf1
          name: openstack/keystone
          required: true
          short_name: keystone
          src_dir: src/opendev.org/openstack/keystone
        opendev.org/openstack/magnum:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/magnum
          checkout: master
          checkout_description: job override ref
          commit: b9a40a6f0ecd692a1fe7cc0f18454413505b44df
          name: openstack/magnum
          required: true
          short_name: magnum
          src_dir: src/opendev.org/openstack/magnum
        opendev.org/openstack/manila:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/manila
          checkout: master
          checkout_description: job override ref
          commit: 5cf57fbe77c3ede8914294524fefd4f2134c2d40
          name: openstack/manila
          required: true
          short_name: manila
          src_dir: src/opendev.org/openstack/manila
        opendev.org/openstack/neutron:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/neutron
          checkout: master
          checkout_description: job override ref
          commit: 5c095ee6e162f6820b3b8dae1f783f9cf4c74764
          name: openstack/neutron
          required: true
          short_name: neutron
          src_dir: src/opendev.org/openstack/neutron
        opendev.org/openstack/nova:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/nova
          checkout: master
          checkout_description: job override ref
          commit: 9666894b46db4c2c66824f1b6e89584de3ab17b2
          name: openstack/nova
          required: true
          short_name: nova
          src_dir: src/opendev.org/openstack/nova
        opendev.org/openstack/octavia:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/octavia
          checkout: master
          checkout_description: job override ref
          commit: 9ff4683c8212e4c043af69f1b5ebadc21651dc58
          name: openstack/octavia
          required: true
          short_name: octavia
          src_dir: src/opendev.org/openstack/octavia
        opendev.org/openstack/os-test-images:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/os-test-images
          checkout: master
          checkout_description: job override ref
          commit: 5d0367e03788764f41da8effffa14e3eac513201
          name: openstack/os-test-images
          required: true
          short_name: os-test-images
          src_dir: src/opendev.org/openstack/os-test-images
        opendev.org/openstack/ovn-octavia-provider:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/ovn-octavia-provider
          checkout: master
          checkout_description: job override ref
          commit: 890b6266450916ddf9ef8c0a157f3fe4eb03e7a5
          name: openstack/ovn-octavia-provider
          required: true
          short_name: ovn-octavia-provider
          src_dir: src/opendev.org/openstack/ovn-octavia-provider
        opendev.org/openstack/placement:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/placement
          checkout: master
          checkout_description: job override ref
          commit: 3cba66c70ce49e31e582c8d03e945017f38fcf11
          name: openstack/placement
          required: true
          short_name: placement
          src_dir: src/opendev.org/openstack/placement
        opendev.org/openstack/python-magnumclient:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/python-magnumclient
          checkout: master
          checkout_description: job override ref
          commit: 0cee96126c3fed1df41976493c17e4b54923ae5d
          name: openstack/python-magnumclient
          required: true
          short_name: python-magnumclient
          src_dir: src/opendev.org/openstack/python-magnumclient
        opendev.org/openstack/requirements:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/requirements
          checkout: master
          checkout_description: job override ref
          commit: b83fbd73926b84db0c913b943f72c71c1cadc641
          name: openstack/requirements
          required: true
          short_name: requirements
          src_dir: src/opendev.org/openstack/requirements
        opendev.org/openstack/swift:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/swift
          checkout: master
          checkout_description: job override ref
          commit: bab1688e2c91cb9866c714ee77bb8c45f6885e7b
          name: openstack/swift
          required: true
          short_name: swift
          src_dir: src/opendev.org/openstack/swift
      ref: refs/pull/1067/head
      resources: {}
      tenant: oss
      timeout: 7200
      topic: null
      voting: true
    zuul_copy_output:
      /etc/ceph: logs
      /etc/glusterfs/glusterd.vol: logs
      /etc/libvirt: logs
      /etc/lvm: logs
      /etc/resolv.conf: logs
      /etc/sudoers: logs
      /etc/sudoers.d: logs
      /var/log/ceph: logs
      /var/log/glusterfs: logs
      /var/log/libvirt: logs
      /var/log/mysql: logs
      /var/log/openvswitch: logs
      /var/log/postgresql: logs
      /var/log/rabbitmq: logs
      /var/log/unbound.log: logs
      '{{ devstack_conf_dir }}/.localrc.auto': logs
      '{{ devstack_conf_dir }}/.stackenv': logs
      '{{ devstack_conf_dir }}/local.conf': logs
      '{{ devstack_conf_dir }}/localrc': logs
      '{{ devstack_full_log}}': logs
      '{{ devstack_log_dir }}/atop': logs
      '{{ devstack_log_dir }}/devstacklog.txt': logs
      '{{ devstack_log_dir }}/devstacklog.txt.summary': logs
      '{{ devstack_log_dir }}/dstat-csv.log': logs
      '{{ devstack_log_dir }}/qemu.coredump': logs
      '{{ devstack_log_dir }}/tcpdump.pcap': logs
      '{{ devstack_log_dir }}/worlddump-latest.txt': logs
      '{{ stage_dir }}/apache': logs
      '{{ stage_dir }}/apache_config': logs
      '{{ stage_dir }}/audit.log': logs
      '{{ stage_dir }}/core': logs
      '{{ stage_dir }}/deprecations.log': logs
      '{{ stage_dir }}/df.txt': logs
      '{{ stage_dir }}/dpkg-l.txt': logs
      '{{ stage_dir }}/etc': logs
      '{{ stage_dir }}/iptables.txt': logs
      '{{ stage_dir }}/listen53.txt': logs
      '{{ stage_dir }}/mount.txt': logs
      '{{ stage_dir }}/performance.json': logs
      '{{ stage_dir }}/pip2-freeze.txt': logs
      '{{ stage_dir }}/pip3-freeze.txt': logs
      '{{ stage_dir }}/rpm-qa.txt': logs
      '{{ stage_dir }}/services.txt': logs
      '{{ stage_dir }}/verify_tempest_conf.log': logs
