Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python315 for openSUSE:Factory checked in at 2026-10-06 19:14:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python315 (Old) and /work/SRC/openSUSE:Factory/.python315.new.3698736 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python315" Tue Oct 6 19:14:57 2026 rev:19 rq:1382577 version:3.15.0~rc3 Changes: -------- --- /work/SRC/openSUSE:Factory/python315/python315.changes 2026-09-10 11:51:02.373705503 +0200 +++ /work/SRC/openSUSE:Factory/.python315.new.3698736/python315.changes 2026-10-06 19:15:59.758455104 +0200 @@ -1,0 +2,283 @@ +Mon Oct 5 10:33:26 UTC 2026 - Matej Cepl <[email protected]> + +- Update to 3.15.0~rc3: + - Security + - gh-158446: Fix a crash or incorrect output that could occur + when formatting a float or complex with a precision close + to the platform’s INT_MAX. PyOS_double_to_string() now + raises ValueError for any precision of that magnitude, + regardless of presentation type or value, as the format + string parsers already did for precisions above INT_MAX. + - gh-156793: asyncio: loop.start_tls() and + loop.create_connection() now validate the server_hostname + argument if an ssl.SSLContext is passed with check_hostname + set to True. (bsc#1283826, CVE-2026-19553) + - gh-156793: ssl.SSLContext.wrap_bio() now validates its + server_side, server_hostname and session arguments similar + to ssl.SSLContext.wrap_socket(). + - In particular, a context with check_hostname enabled and no + server_hostname passed to wrap_bio() now raises ValueError + instead of completing a handshake that verified the + certificate chain without verifying the peer’s identity, + with no indication that the check had been skipped. + - gh-157265: In tarfile, when extracting a link falls back + to extracting a member of the archive, skip the member + when the filter function returns None when called with the + extracted member’s name replaced with the link’s. + - gh-157953: Update bundled libexpat to version 2.8.5. + - gh-157579: Fix a race condition in the cleanup of + tempfile.TemporaryDirectory. When working around file + system permission errors, files are now removed relative to + open directory file descriptors instead of resolving their + path again, so that replacing a directory of the tree with + a symbolic link can no longer make the cleanup delete files + outside of the temporary directory. This addresses CVE + 2026-12345. + - gh-156293: Fix a crash in ssl when an sni_callback switches + a connection to another SSLContext and the context that + carries the callback is no longer referenced by the + application. Servers that keep their sni_callback context + alive (the usual case when it wraps the listening socket + or is stored on the server object) were not affected. This + addresses CVE 2026-19445. (bsc#1283969, CVE-2026-19445) + - Core and Builtins + - gh-158140: Resolve lazily imported sibling submodules + independently, so accessing one does not import another + merely because its declaration came last. + - gh-158364: Fix crash when sys._current_frames() or + sys._current_exceptions() is called while another + interpreter is running. + - gh-158254: Reverse iterators over a dict and its views now + raise RuntimeError if the dictionary’s keys change during + iteration, like forward iterators, instead of yielding + entries for the new keys. + - gh-157914: Revert gh-146064. The linked PyMutex change was + causing a significant performance regression in some cases. + - gh-157838: Merge biased reference counts on behalf of + threads that are detached instead of waiting for them to + attach again, in the free-threaded build. + - gh-157778: Include the line number of the opening brace + in the SyntaxError for an unclosed f-string or t-string + replacement field when a matching quote on a later line is + interpreted as the start of an unterminated string. + - gh-157757: Fix a lazy import a.b as c reading b off a + instead of importing the module a.b. It now binds the + submodule, and raises ModuleNotFoundError when no module + backs the name. + - gh-155695: Resolved names are now removed from + sys.lazy_modules more consistently: a lazy import of an + already loaded module is no longer recorded, and reifying + lazy from pkg import attr now discards the pkg.attr entry. + - gh-157378: Fix SyntaxError.offset and + SyntaxError.end_offset for the “Non-UTF-8 code starting + with …” error when a non-ASCII character precedes the + invalid byte on the same line. Patch by Shamil Abdulaev. + - gh-156762: Fix undefined behaviour in + operator.methodcaller: its tp_clear slot function returned + void instead of int, so the garbage collector called it + through an incompatible function type. Patched by Shamil + Abdulaev. + - gh-157377: Fix gc.get_count() on the free-threaded build + resetting the thread-local allocation counter that + schedules automatic garbage collection. A thread that + called it while allocating could prevent cyclic garbage + from ever being collected. + - gh-157247: Fix sys.activate_stack_trampoline() allowing + activation from a subinterpreter while the JIT is enabled + in the main interpreter. + - gh-156995: Fix bytearray sharing its buffer with the + single-byte bytes object of the same value, so that writing + to the bytearray modified that bytes object. This happened + with bytearray.take_bytes() when exactly one byte remained, + and on the free-threaded build when a bytearray was shrunk + to one byte from another thread. + - gh-156910: Fix a deadlock in the free threaded build when + setting __abstractmethods__ on a type while another thread + holds the type lock. + - gh-156894: Fix the position of syntax errors which cover a + range if the line contains non-ASCII characters before the + error. + - gh-155525: Fix quadratic-time tokenization of modules + containing many f-strings or t-strings. + - gh-156689: Fix an out-of-bounds read in compile() + and ast.parse() when an AST object is passed with + mode='func_type'. + - gh-156114: Fix a crash in the perf trampoline when a code + object has a name or filename that cannot be encoded to + UTF-8. Patched by Shamil Abdulaev. + - gh-156126: Fix a crash when importing a module whose name + contains characters that cannot be encoded to UTF-8 (such + as lone surrogates) while -X importtime is enabled. + - gh-155526: Fix spurious OverflowError for abs(nanj) in case + errno was previously set to ERANGE by some library call . + Patch by Sergey B Kirpichev . + - gh-151464: Exclude invalid token <> from tokenize output . + SyntaxError for <> now suggests != . + - gh-154719: Trailing whitespace in a t-string + interpolation expression is now preserved in + string.templatelib.Interpolation.expression, up to the + closing } or the conversion (!), format (:), or debug (=) + delimiter. Explicit line continuations following a debug + = remain part of the debug text and are excluded from + expression. + - gh-152708: Fix AST generation asymmetry where unary + positive + was implicitly dropped in pattern match + expressions, restoring parsing parity with unary negative + -. + - Library + - gh-157788: Fix python -m asyncio ps failing on a process + that has a task with a name longer than 255 characters. + - gh-157660: Fix profiling.sampling reporting errors or + incorrect line numbers in free-threaded builds when a + thread-local bytecode array grows or gains entries after + being cached. + - gh-157639: Fix a crash in cProfile when an external timer + re-enters the profiler. Profiling events raised while the + external timer runs are now ignored. + - gh-157335: Fix out-of-bounds write in mmap.mmap.__setitem__ + that could occur when converting the index or the assigned + value (via __index__() for a single item, or via the buffer + protocol for a slice) resized or closed the mmap object + during the assignment. + - gh-128509: marshal.load() and marshal.loads() can now get + 1-byte string singletons. Patch by Victor Stinner. + - gh-157301: Fix asyncio.Task hanging the event loop when an + eager start fails to enter the task’s context. + - gh-157213: Fix asyncio.gather() leaving stale await-graph + edges on children that outlive it. + - gh-156002: zipfile again reads members through a + third-party decompressor installed by monkey-patching + the private _get_decompressor() to return an object that + only implements old BZ2Decompressor API from Python + 3.3. Note that decompressors without needs_input and + two-argument decompress() are vulnerable to CVE 2026-15310. + (bsc#1277111, CVE-2026-15310) + - gh-157159: The usage message printed by python -m tabnanny + when no arguments are given now suggests python -m instead + of the source file. + - gh-157058: asyncio.wait_for() with a non-positive timeout + now records the waiter in the call graph. + - gh-156933: Fix incorrect integer return values from ctypes + callbacks on some platforms, such as s390x. + - gh-156988: asyncio.print_call_graph() no longer truncates + the call stack at a synchronous generator. + - gh-156970: Set the docstring of + unittest.mock.Mock.return_value. + - gh-156924: annotationlib.ForwardRef.evaluate() now + resolves lazy import proxies found in the namespace. With + FORWARDREF, a lazy import that fails to resolve now results + in a ForwardRef instead of the lazy import proxy, and with + VALUE the underlying exception is propagated. + - gh-127057: Fix asyncio.ProactorEventLoop UDP transports so + that a ConnectionResetError raised by WSARecvFrom no longer + stops the read loop. + - gh-156512: Fix asyncio losing a connection twice when + resume_writing() closes the transport. + - gh-155596: Fix pprint.pprint() and pprint.pformat() with + expand=True not honouring width for nested values. The + width of the 'key': prefix was not counted when deciding + whether a value fitted on the current line, so values under + long keys could overflow width instead of being expanded. + - gh-155433: Fix asyncio.TaskGroup losing outside + cancellation after cancel(). + - gh-155418: Fix asyncio.TaskGroup hang when a task created + by asyncio.eager_task_factory() cancels the group before + suspending. + - gh-155143: Fix asyncio.shield() leaking the calling task + via the await-graph and callbacks when called on a future + that never resolves. + - gh-154470: Fixed a spurious ^J printed at the end of every + source line by the list command of pdb when the output + is colorized (for example when attaching to a running + process). The source line is now stripped before it is + colorized, like the where command already did. + - gh-154335: The profiling.sampling profiler now respects + NO_COLOR, FORCE_COLOR, and PYTHON_COLORS and avoids colored + output when not writing to a terminal. + - gh-154090: Record the profiling mode in Tachyon binary + profiles and reject differential comparisons whose known + modes do not match. + - gh-152907: Restore cooked-mode terminal output flags around + PyOS_InputHook callbacks in the new REPL (_pyrepl), so that + output written by an input hook (for example a GUI toolkit + event loop) is no longer emitted with OPOST disabled and + keeps its carriage returns. + - gh-151179: Fix a pidfd leak in _PidfdChildWatcher on + Linux: the watcher no longer leaks the process file + descriptor when waitpid() fails with an error other than + ChildProcessError. + - Documentation + - gh-57491: Reduce the depth of the table of contents in the + EPUB documentation from three levels to two, making it much + shorter and easier to navigate in e-book readers. + - Tests + - gh-158051: The iOS testbed has been updated for + compatibilty with Xcode 27. + - Build + - gh-158010: Update Android and iOS build scripts to use + OpenSSL 3.5.9. + - gh-157549: Use sysconf(_SC_PAGESIZE) instead of + getpagesize() in remote_debug.h so _remote_debugging builds + on Darwin with -Werror=implicit-function-declaration. + - gh-152023: Update Android builds to SQLite 3.53.4. + Additionally, enable the median() and percentile() + functions. + - Windows + - gh-158010: Updated Windows builds to use OpenSSL 3.5.9. + - gh-157368: Fix truncated sys.version in the case of + clang-cl versions 22 or newer on Windows. Also fixes the + Windows on Arm case, where the Microsoft compiler was + reported instead of clang. Patch by Chris Eibl. + - gh-157212: Fix _Py_ThreadId() compilation on Windows ARM64 + with MinGW toolchains, where __getReg() is unavailable. + The TEB address is now read directly from x18. Patch by + Christian Aurich. + - gh-152023: Update Windows builds to SQLite 3.53.4. + Additionally, enable the median() and percentile() + functions. macOS + - gh-158010: Update macOS installer to use OpenSSL 3.5.9. + - gh-152023: Update macOS installer builds to SQLite 3.53.4. + - IDLE + - gh-158067: Fix the IDLE File Open dialog listing text files + before Python files when opened from the Shell or an Output + window. + - gh-75512: Output from a thread printed in the IDLE Shell + while a statement is being entered no longer takes over the + prompt of the statement. + - gh-89544: Fix IDLE hanging after Restart Shell while + receiving a large output from the user process. + - gh-59568: Fix “Save As” and “Open” dialogs in IDLE for + a file whose name starts with ~ on Windows and X11 with + Tcl/Tk older than 9. + - gh-69004: The Debugger item of the IDLE Debug menu is now + disabled while user code runs, like Stack Viewer. + - gh-93966: The highlighting of a syntax error in the IDLE + Shell is now removed when the next statement is entered, + not only when the next syntax error occurs. + - gh-75234: Fix editing help sources and key bindings in + the IDLE Settings dialog after selecting them with the + keyboard. + - gh-55646: Fix IDLE crash at startup when the user + configuration contains an invalid key binding, such as + <Alt-Key-up> instead of <Alt-Key-Up>. The invalid binding + is now ignored with a warning. + - C API + - gh-156939: Fix PyBytesWriter_FinishWithSize() to return an + empty bytearray when _PyBytesWriter_CreateByteArray() is + used, instead of returning an empty bytes string. Patch by + Victor Stinner. + - gh-156939: Fix PyBytesWriter_Format() error handling: + restore the writer to its previous state on error. Patch by + Victor Stinner. + - gh-140550: Fix the PyABIInfo_VAR macro: remove redundant ;. + Before, PyABIInfo_VAR(abi_info); code added two ;; which is + illegal in C++03. Patch by Victor Stinner. + +------------------------------------------------------------------- +Fri Oct 2 00:11:45 UTC 2026 - Matej Cepl <[email protected]> + +- CVE-2026-82049: to follow symlinks when extracting tarfile hard + links (bsc#1280459, gh#pyhton/cpython#157190) + CVE-2026-82049-tarfile-hard-link.patch + +------------------------------------------------------------------- Old: ---- Python-3.15.0rc2.tar.xz Python-3.15.0rc2.tar.xz.sigstore New: ---- CVE-2026-82049-tarfile-hard-link.patch Python-3.15.0rc3.tar.xz Python-3.15.0rc3.tar.xz.sigstore ----------(New B)---------- New: links (bsc#1280459, gh#pyhton/cpython#157190) CVE-2026-82049-tarfile-hard-link.patch ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python315.spec ++++++ --- /var/tmp/diff_new_pack.d4BgQJ/_old 2026-10-06 19:16:01.655534489 +0200 +++ /var/tmp/diff_new_pack.d4BgQJ/_new 2026-10-06 19:16:01.660534698 +0200 @@ -162,8 +162,8 @@ # _md5.cpython-38m-x86_64-linux-gnu.so %define dynlib() %{sitedir}/lib-dynload/%{1}.cpython-%{abi_tag}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}.so Name: %{python_pkg_name}%{psuffix} -Version: 3.15.0~rc2 -%define tarversion 3.15.0rc2 +Version: 3.15.0~rc3 +%define tarversion 3.15.0rc3 %define tarname Python-%{tarversion} Release: 0 Summary: Python 3 Interpreter @@ -230,6 +230,9 @@ # PATCH-FIX-OPENSUSE test_UDPLITE_support.patch gh#python/cpython#149078 [email protected] # improve testing of the presence of IPPROTO_UDPLITE support Patch49: test_UDPLITE_support.patch +# PATCH-FIX-UPSTREAM CVE-2026-82049-tarfile-hard-link.patch bsc#1280459 [email protected] +# Follow symlinks when extracting tarfile hard links (GH-157191) +Patch50: CVE-2026-82049-tarfile-hard-link.patch #### Python 3.15 DEVELOPMENT PATCHES BuildRequires: autoconf-archive BuildRequires: automake ++++++ CVE-2026-82049-tarfile-hard-link.patch ++++++ >From c72c1780735ee4ba61aaa5b11e9dcaaa1ab62684 Mon Sep 17 00:00:00 2001 From: Stan Ulbrych <[email protected]> Date: Thu, 10 Sep 2026 11:00:28 +0100 Subject: [PATCH] gh-157190: Follow symlinks when extracting `tarfile` hard links (GH-157191) (cherry picked from commit b38be2e6cf9d989075ab73412c63e003ebad4ff3) Co-authored-by: Stan Ulbrych <[email protected]> --- Lib/tarfile.py | 6 +++++- Lib/test/test_tarfile.py | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) Index: Python-3.15.0rc3/Lib/tarfile.py =================================================================== --- Python-3.15.0rc3.orig/Lib/tarfile.py 2026-10-05 12:49:43.393746478 +0200 +++ Python-3.15.0rc3/Lib/tarfile.py 2026-10-05 12:49:49.369895129 +0200 @@ -2818,7 +2818,11 @@ if os.path.lexists(targetpath): # Avoid FileExistsError on following os.link. os.unlink(targetpath) - os.link(tarinfo._link_target, targetpath) + # Resolve the target so the hard link points to the file + # itself. Otherwise os.link() may duplicate a symlink to a + # shallower location, where its relative target escapes the + # destination directory. (CVE-2026-82049) + os.link(os.path.realpath(tarinfo._link_target), targetpath) return except symlink_exception: keyerror_to_extracterror = True Index: Python-3.15.0rc3/Lib/test/test_tarfile.py =================================================================== --- Python-3.15.0rc3.orig/Lib/test/test_tarfile.py 2026-10-05 12:49:45.737248895 +0200 +++ Python-3.15.0rc3/Lib/test/test_tarfile.py 2026-10-05 12:49:49.370238356 +0200 @@ -4492,6 +4492,24 @@ self.expect_file("s", symlink_to=os.path.join('..', 'escape')) @symlink_test + @os_helper.skip_unless_hardlink + def test_sneaky_hardlink_relocation(self): + with ArchiveMaker() as arc: + arc.add("a/escape", content="decoy") + arc.add("a/b/s", symlink_to=os.path.join("..", "escape")) + arc.add("s", hardlink_to=os.path.join("a", "b", "s")) + + for filter in 'data', 'tar': + with self.subTest(filter), self.check_context(arc.open(), filter): + self.expect_file("a/escape", content="decoy") + if os_helper.can_symlink(): + self.expect_file("a/b/s", symlink_to=os.path.join('..', 'escape')) + else: + self.expect_file("a/b/s", content="decoy") + self.expect_file("s", content="decoy") + self.assertFalse((self.destdir / "s").is_symlink()) + + @symlink_test def test_exfiltration_via_symlink(self): # (CVE-2025-4138) # Test changing symlinks that result in a symlink pointing outside ++++++ Python-3.15.0rc2.tar.xz -> Python-3.15.0rc3.tar.xz ++++++ /work/SRC/openSUSE:Factory/python315/Python-3.15.0rc2.tar.xz /work/SRC/openSUSE:Factory/.python315.new.3698736/Python-3.15.0rc3.tar.xz differ: char 26, line 1 ++++++ Python-3.15.0rc2.tar.xz.sigstore -> Python-3.15.0rc3.tar.xz.sigstore ++++++ --- /work/SRC/openSUSE:Factory/python315/Python-3.15.0rc2.tar.xz.sigstore 2026-09-10 11:51:02.298702358 +0200 +++ /work/SRC/openSUSE:Factory/.python315.new.3698736/Python-3.15.0rc3.tar.xz.sigstore 2026-10-06 19:15:59.690452258 +0200 @@ -1 +1 @@ -{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIDIzCCAqmgAwIBAgIUKwLUw8Ju9ZMkThgz0J6AVYlxhT0wCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwOTAxMTE1MDIzWhcNMjYwOTAxMTIwMDIzWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExDykVs1kEnmTsKOJxlCFJFctlyxDSivaDZtkS/DnBhNlcqc3p1X97AGVIiuKQ+lQGXpxsBHZiReXQRtJfvbLr6OCAcgwggHEMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUWUmO1dC4H523kbvQ3MIyqQEaP1AwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHQYDVR0RAQH/BBMwEYEPaHVnb0BweXRob24ub3JnMCwGCisGAQQBg78wAQEEHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDAuBgorBgEEAYO/MAEIBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDBSBgorBgEEAYO/MAEYBEQMQkNnY3hNekkwTWpJMUVpWm9kSFJ3Y3pvbE1rWWxNa1puYVhSb2RXSXVZMjl0SlRKR2JHOW5hVzRsTWtadllYVjBhQTCBiwYKKwYBBAHWeQIEAgR9BHsAeQB3AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoFzOX/AAAAQDAEgwRgIhALpfq7VGcODbni1gZMRxJpFUAmmYvxC5elMVpn/nsLrmAiEAsimXYgwTR g7CKfF8LkwCHxorOMGsyJtTdWIJm3H++/MwCgYIKoZIzj0EAwMDaAAwZQIxAO4sDqbS+kErIQoDnYWFLoT+22F0JVyj7FMbr38LVhJtXFUAxtE5nTKrZd6czyML7gIwR6k40SBl/uowIdM7RwaHH/lRi9bj1Py8Cj276JkFI7tyV/a4o40ndJyf5ugLKBFM"},"tlogEntries":[{"logIndex":"2675318197","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1788263424","inclusionPromise":{"signedEntryTimestamp":"MEUCIQCC9jJrOdffYO+7WsnAdFCrRvDGAHVfdtJPsrwW2EZkEQIgF8eeSXv/QUEHttoYvOHS4pgtsBGi467DZ6nIeUoDcQI="},"inclusionProof":{"logIndex":"2553413935","rootHash":"xm2rCUXoqngkHj8cWnZCtNPLYszXpajVqgtCN1S6jRU=","treeSize":"2553413951","hashes":["4u2OXRQviYapVbR4N//ssbBFHQhndoO5wyAtpPGBlAc=","GLARglcBjhcfC0p8rIfPS9LQs/GJRClhNWVcW4/CFeI=","yDt+e+HGs8pXjmWe6RimdCK9SJJApGXw8GU4gSbKkHE=","sW75Itvqrssq2u9iX2qHEirVod8Y15pK7HV4I8zDZzs=","KkQXJC6VLQoB8wEKfDTYlTbzuTfXnu5024yzsqFoI4U=","cSEYXG2rEUU7HyjY2RZFFI/yheNMIgJ2GLK3HXUHr3A=","SSH92a65bJay4W0AgaDI3pupgOhaV3iYVReHdfUig5s=","UX3sd vA8Z8o3UT/TCllcEVIJIMKKN7j9jBDsVczU0L8=","HGv3uWODv80+/W38Qp9dwZvMME6N2S3s6KWENP9zHBw=","W+9Pzz9RSgONXuum1pR7Ru7WDjAmmiJjqaC9gYMnSBQ=","eXSLrLqKSxRTixSP/k4YimriB2lufao6trqTrsxxlyg=","SndbMKVtcTenAkwi2JBfGzD+mhexp1qJbRIY+A1JRIU=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2553413951\nxm2rCUXoqngkHj8cWnZCtNPLYszXpajVqgtCN1S6jRU=\n\n— rekor.sigstore.dev wNI9ajBFAiEA1Y2/mgkxTjcM4uml8uDhs7XRq8Rw3/oW0lfwQaGIAJgCIC1Doq75O4YG/KsCVetlMXI0KKjJ2H8wGtJUD1dQuROk\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI4ZDkzYWY1ZWFhYWVhNWFkZmQ0MWJkNzg2YTdiYTNmMDNmMmFkMWFiNTdjNmE2NWUwYjk2M2RlYWI5MWQ1YWQ3In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUUNaYVd4SER6eFpoYmlubVlnMG5rb2doSVh1N0hHM2w1clk1S2xMQkI4dXF3SWhBSklvNlFybG5TQWZld09mK1dSekFoNklibWw1M0dIbGU2cjJwV2Y3OWZ4diIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSl VTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVUkpla05EUVhGdFowRjNTVUpCWjBsVlMzZE1WWGM0U25VNVdrMXJWR2huZWpCS05rRldXV3g0YUZRd2QwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVUVhoTlZFVXhUVVJKZWxkb1kwNU5hbGwzVDFSQmVFMVVTWGROUkVsNlYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVY0UkhsclZuTXhhMFZ1YlZSelMwOUtlR3hEUmtwR1kzUnNlWGhFVTJsMllVUmFkR3NLVXk5RWJrSm9UbXhqY1dNemNERllPVGRCUjFaSmFYVkxVU3RzVVVkWWNIaHpRa2hhYVZKbFdGRlNkRXBtZG1KTWNqWlBRMEZqWjNkblowaEZUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZYVlcxUENqRmtRelJJTlRJemEySjJVVE5OU1hseFVVVmhVREZCZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoUldVUldVakJTUVZGSUwwSkNUWGRGV1VWUVlVaFdibUl3UW5kbFdGSnZZakkwZFdJelNtNU5RM2RIUTJselIwRlJVVUpuTnpoM1FWRkZSUXBJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx 6WWpKa2NHSnBPWFpaV0ZZd1lVUkJkVUpuYjNKQ1owVkZRVmxQTDAxQlJVbENRMEZOQ2todGFEQmtTRUo2VDJrNGRsb3liREJoU0ZacFRHMU9kbUpUT1hOaU1tUndZbWs1ZGxsWVZqQmhSRUpUUW1kdmNrSm5SVVZCV1U4dlRVRkZXVUpGVVUwS1VXdE9ibGt6YUU1bGEydDNWRmR3U2sxVlZuQlhiVGxyVTBaS00xa3pjSFppUlRGeVYxZDRUbUV4Y0hWWlZtaFRZakpTV0ZOWVZscE5hbXd3VTJ4U1N3cFNNa3BJVDFjMWFGWjZVbk5VVjNSaFpHeHNXVlpxUW1oUlZFTkNhWGRaUzB0M1dVSkNRVWhYWlZGSlJVRm5VamxDU0hOQlpWRkNNMEZPTURsTlIzSkhDbmg0UlhsWmVHdGxTRXBzYms1M1MybFRiRFkwTTJwNWRDODBaVXRqYjBGMlMyVTJUMEZCUVVKdlJucFBXQzlCUVVGQlVVUkJSV2QzVW1kSmFFRk1jR1lLY1RkV1IyTlBSR0p1YVRGbldrMVNlRXB3UmxWQmJXMVpkbmhETldWc1RWWndiaTl1YzB4eWJVRnBSVUZ6YVcxWVdXZDNWRkpuTjBOTFprWTRUR3QzUXdwSWVHOXlUMDFIYzNsS2RGUmtWMGxLYlROSUt5c3ZUWGREWjFsSlMyOWFTWHBxTUVWQmQwMUVZVUZCZDFwUlNYaEJUelJ6UkhGaVV5dHJSWEpKVVc5RUNtNVpWMFpNYjFRck1qSkdNRXBXZVdvM1JrMWljak00VEZab1NuUllSbFZCZUhSRk5XNVVTM0phWkRaamVubE5URGRuU1hkU05tczBNRk5DYkM5MWIzY0tTV1JOTjFKM1lVaElMMnhTYVRsaWFqRlFlVGhEYWpJM05rcHJSa2szZEhsV0wyRTBielF3Ym1SS2VXWTFkV2RNUzBKR1RRb3RMUzB0TFVWT1JDQkRSVkpVU1Va SlEwRlVSUzB0TFMwdENnPT0ifX19fQ=="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIIE6TADAgEAMIIE4AYJKoZIhvcNAQcCoIIE0TCCBM0CAQMxDTALBglghkgBZQMEAgEwgcIGCyqGSIb3DQEJEAEEoIGyBIGvMIGsAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgf5JxMQ1tHVwf9FzbsL1eEYYX32yIQkh/PpZJMTDY32ACFQDIvp9WNONl0Bx4ODWzPoA8iYH4zRgPMjAyNjA5MDExMTUwMjRaMAMCAQECCCah1sYW4uzJoDKkMDAuMRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxFTATBgNVBAMTDHNpZ3N0b3JlLXRzYaCCAhQwggIQMIIBlqADAgECAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkMB4XDTI1MDQwODA2NTk0M1oXDTM1MDQwNjA2NTk0M1owLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATitrZnyEo2KDZP2QWMIBOgYbfSOTL5ZC/cHMv6Yq+HVIo1H9TC7Cx80KDiyvKhgB3wTqKyi9UDczhqg12b1AOLnRnydMTK+qB8M+1MjBci1+Jb8AV/VXu7CRuQCiPTHFyjajBoMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUif15Q4fP0GVGwwJGxyxzW3206wMwHwYDVR0jBBgwFoAUmOwB73+7Uf/UlR5vioiYUweJzr8wFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwCgY IKoZIzj0EAwMDaAAwZQIwO2mxX/opo7SrIX9QyxfZpJRcpAV2gZOm1AZzR+2rVyy6Uc8Ybp2ybIw13ckH4bcRAjEA5qO8FyOkmYpvg2/7ZNqiPxRzn5vqKHoVcIIqtpKq6l7TvOqzAxxclN7VwTG8e++XMYIB2jCCAdYCAQEwUTA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDALBglghkgBZQMEAgGggfwwGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0yNjA5MDExMTUwMjRaMC8GCSqGSIb3DQEJBDEiBCDYAKclz02B7pgrxu1FbftHru6yNccvvbEqW8DOvAxaIjCBjgYLKoZIhvcNAQkQAi8xfzB9MHsweQQghfknvAerYsrDtENWwQ78gbLGiD/aernm2HDZ0TrNBbcwVTA9pDswOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCgYIKoZIzj0EAwIEZjBkAjAyMI1lG+jlZePfr4fWGo2OpskPFXcia9wpW32a5iL31MzjcXHag75neNb/9fVLmDQCMH0D4t7HnNb9miwCNryVkOZf6/cnfZ8cUuqAUSi/wbIxi4gbtWdb6ITem1vAzRy8sQ=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"jZOvXqqupa39Qb14anuj8D8q0atXxqZeC5Y96rkdWtc="},"signature":"MEYCIQCZaWxHDzxZhbinmYg0nkoghIXu7HG3l5rY5KlLBB8uqwIhAJIo6QrlnSAfewOf +WRzAh6Ibml53GHle6r2pWf79fxv"}} +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIDIzCCAqmgAwIBAgIUT0nnorS9FfJHmYmiE9C3/J8SepkwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDAyMjEwMDM2WhcNMjYxMDAyMjExMDM2WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPtt4Z+3Q4tJQNCfJ0YdH1dpU/jAL5R2rYumqzZjm25fdnw45cHLeruWh//i0H+fi44uWDtMEBqpzVlol36GBUaOCAcgwggHEMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUzyt4Gld3iVIiDwztk63plyNfCQYwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHQYDVR0RAQH/BBMwEYEPaHVnb0BweXRob24ub3JnMCwGCisGAQQBg78wAQEEHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDAuBgorBgEEAYO/MAEIBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDBSBgorBgEEAYO/MAEYBEQMQkNnY3hNekkwTWpJMUVpWm9kSFJ3Y3pvbE1rWWxNa1puYVhSb2RXSXVZMjl0SlRKR2JHOW5hVzRsTWtadllYVjBhQTCBiwYKKwYBBAHWeQIEAgR9BHsAeQB3AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoP5rQB8AAAQDAEgwRgIhANQuFLwb8DIV5D3pE7aWuDtCavGu/HVUK0nLn5IaP/hqAiEAvFlycCBXE mr6uFWBCJPB8OdgOMGlHmtpNERH1NbhRK8wCgYIKoZIzj0EAwMDaAAwZQIxAPKuCJeSg1GA/zRcO6yiN+TXWH/PCYW0Bewv/Krq+zUjIVPt++oNnA0yXAX7x8DcnQIwPWKKonHCU/xlrOaMx4dR/yTUAhA5m6q+FifF7yvEWoNCdv+jNe0/KYZHmlrDJ4i9"},"tlogEntries":[{"logIndex":"3062011159","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1790974837","inclusionPromise":{"signedEntryTimestamp":"MEYCIQDI8jZ6oTMKA+/aG1G1CcxiubVEQVpNPVjrBCsFy2JLygIhAPkSX3RQfKcnE6SJlTHijMQtP9P88qKQTt7zzXeIGy4p"},"inclusionProof":{"logIndex":"2940106897","rootHash":"jVuiaf9jaeHR5eJ4MWSA03sufMDYhH2Mj/wzTPLxsPI=","treeSize":"2940106980","hashes":["HD2wu1nVZLNHVgFDimZJ9ICNXiA9t0jH78fQcuNCXqU=","fzU/MfgWky0Q4TUg18oeFB4x2R+PZdwCsrENVcLjdOE=","gUoqTDGGzc0937FAE3zQVTLH+8NIUFVhH/4VzqyvYgQ=","VGc7p+Zx0YucnQ8f3KvRQKKprlnL0TpDnuiI5CJFKd0=","W5M8xPCk4js8ecX4Xh/JWDkWUHGkaHfXwyhYcKwUxR4=","srYXQRdV53EP8roH2qMege9UaYfDNn5PQR91T5UN67U=","b7XiE/0s4PbBZLElt3iACH/D+Usr6eQdIjJk9thV5bI=","A4p/b cF0eG1zLxNvB6j/XkWTX9AR4tWRmuylI/HGo5o=","cQPzZx/PIOHDycSeWuc/Fm5G+pLuRAUJwbFd+LdAMZ4=","uc7UeNk6/vRwsT1Ar2i7OkWlpxm21aCGhTthq4Qo59Q=","esScA1D/gt1zlYu5qKcQ2BI1DlnCp1dzxxhIAk+ODBQ=","rzvJFCut+2a7bgQQI7mx9C4RDBKiRoi5YpiXZwxuXgk=","RbDMvK0TdPR3BRSSCZZc1hmUTwC0/TAkjVP9dl7DIPc=","b/aTmaF8EM3nrCXBWEs7GKeCfVlKoi4YeSAkD2KYybM=","cacBU5U5IA5lYVW5K1dat4X+pDx5JGNFSbCYnKNp6Do=","fWpO4p76l89M5iktiUHSb2hRvGym/qc0w2lkBWW7p6Q=","qI7yg91WvSrGJMQMylMEFwHBDa1KFLvbMUcHht4ZsGs=","JULUaep1QSvOiUTmZYM14YQP8u0lTNM/hN1Omtdh7rI=","z3DeLenzzsUGBSwnEznCRh1TPLwNUkKOty05gLTmb58=","4lYk7cX8PszZLoyQMWjMDB1BOBn4f7hehtFiHo92e5Y=","ttpxd0TJprOUtb/8Wf5DeIzwNtUw72Q0YnXE2LFMIZo=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2940106980\njVuiaf9jaeHR5eJ4MWSA03sufMDYhH2Mj/wzTPLxsPI=\n\n— rekor.sigstore.dev wNI9ajBFAiBzsqDExVQ+aDytJzGSi7Tv2NV2pf9FNlp86mYJm+KbdgIhAPHgQKFEq0TMXSnODddUuepEawH+pSWeDDDlATe2oRE S\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI1MDY2MzBhYTY2ZDU0NDExODhmMzRkZjIyYzA3NjBiZmU4N2ZjOTIyMTI2MzA0OTNlYmM5ZmYzYjNhN2ExZDQ5In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJRUl4UXEwazNoVkVMTGlsZjVNbGVWdENVbFV2ZE1JMFJjeGdHMjd0TnhBbUFpRUFxalIwN2UvYXJwWDhMUFh5WXAxaVU4L2p6cW41elhNZ3NRTHFiRWUyVkFZPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVUkpla05EUVhGdFowRjNTVUpCWjBsVlZEQnVibTl5VXpsR1prcEliVmx0YVVVNVF6TXZTamhUWlhCcmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUVhsTmFrVjNUVVJOTWxkb1kwNU5hbGw0VFVSQmVVMXFSWGhOUkUweVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZRZEhRMFdpc3pVVFIwU2xGT1EyWktNRmxrU0RGa2NGVXZha0ZNTlZJeWNsbDFiWEVLZWxwcWJUSTFabVJ1ZHpRMVkwaE1aWEoxVjJndkwya 3dTQ3RtYVRRMGRWZEVkRTFGUW5Gd2VsWnNiMnd6TmtkQ1ZXRlBRMEZqWjNkblowaEZUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlY2ZVhRMENrZHNaRE5wVmtscFJIZDZkR3MyTTNCc2VVNW1RMUZaZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoUldVUldVakJTUVZGSUwwSkNUWGRGV1VWUVlVaFdibUl3UW5kbFdGSnZZakkwZFdJelNtNU5RM2RIUTJselIwRlJVVUpuTnpoM1FWRkZSUXBJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx6WWpKa2NHSnBPWFpaV0ZZd1lVUkJkVUpuYjNKQ1owVkZRVmxQTDAxQlJVbENRMEZOQ2todGFEQmtTRUo2VDJrNGRsb3liREJoU0ZacFRHMU9kbUpUT1hOaU1tUndZbWs1ZGxsWVZqQmhSRUpUUW1kdmNrSm5SVVZCV1U4dlRVRkZXVUpGVVUwS1VXdE9ibGt6YUU1bGEydDNWRmR3U2sxVlZuQlhiVGxyVTBaS00xa3pjSFppUlRGeVYxZDRUbUV4Y0hWWlZtaFRZakpTV0ZOWVZscE5hbXd3VTJ4U1N3cFNNa3BJVDFjMWFGWjZVbk5VVjNSaFpHeHNXVlpxUW1oUlZFTkNhWGRaUzB0M1dVSkNRVWhYWlZGSlJVRm5VamxDU0hOQlpWRkNNMEZPTURsTlIzSkhDbmg0UlhsWmVHdGxTRXBzYms1M1MybFRiRFkwTTJwNWRDODBaVXRqYjBGMlMyVTJUMEZCUVVKdlVEVnlVVUk0UVVGQlVVUkJSV2QzVW1kSmFFRk9VWF VLUmt4M1lqaEVTVlkxUkROd1JUZGhWM1ZFZEVOaGRrZDFMMGhXVlVzd2JreHVOVWxoVUM5b2NVRnBSVUYyUm14NVkwTkNXRVZ0Y2paMVJsZENRMHBRUWdvNFQyUm5UMDFIYkVodGRIQk9SVkpJTVU1aWFGSkxPSGREWjFsSlMyOWFTWHBxTUVWQmQwMUVZVUZCZDFwUlNYaEJVRXQxUTBwbFUyY3hSMEV2ZWxKakNrODJlV2xPSzFSWVYwZ3ZVRU5aVnpCQ1pYZDJMMHR5Y1N0NlZXcEpWbEIwS3l0dlRtNUJNSGxZUVZnM2VEaEVZMjVSU1hkUVYwdExiMjVJUTFVdmVHd0tjazloVFhnMFpGSXZlVlJWUVdoQk5XMDJjU3RHYVdaR04zbDJSVmR2VGtOa2RpdHFUbVV3TDB0WldraHRiSEpFU2pScE9Rb3RMUzB0TFVWT1JDQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENnPT0ifX19fQ=="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIIE6jADAgEAMIIE4QYJKoZIhvcNAQcCoIIE0jCCBM4CAQMxDTALBglghkgBZQMEAgEwgcIGCyqGSIb3DQEJEAEEoIGyBIGvMIGsAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgjkBGJgfftxw5Gh5M8gKrK1wGhtqlGsag5NX8bPnWHGwCFQDzd3ulKDhhvlOrYqyhyVuuV5luVRgPMjAyNjEwMDIyMTAwMzdaMAMCAQECCCduQcGsjgTBoDKkMDAuMRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxFTATBgNVBAMTDHNpZ3N0b3JlLXRzYaCCAhQwggIQMIIBlqADAgECAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAzA5MRUwEwYDVQQKEwxzaWdzd G9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkMB4XDTI1MDQwODA2NTk0M1oXDTM1MDQwNjA2NTk0M1owLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATitrZnyEo2KDZP2QWMIBOgYbfSOTL5ZC/cHMv6Yq+HVIo1H9TC7Cx80KDiyvKhgB3wTqKyi9UDczhqg12b1AOLnRnydMTK+qB8M+1MjBci1+Jb8AV/VXu7CRuQCiPTHFyjajBoMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUif15Q4fP0GVGwwJGxyxzW3206wMwHwYDVR0jBBgwFoAUmOwB73+7Uf/UlR5vioiYUweJzr8wFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwCgYIKoZIzj0EAwMDaAAwZQIwO2mxX/opo7SrIX9QyxfZpJRcpAV2gZOm1AZzR+2rVyy6Uc8Ybp2ybIw13ckH4bcRAjEA5qO8FyOkmYpvg2/7ZNqiPxRzn5vqKHoVcIIqtpKq6l7TvOqzAxxclN7VwTG8e++XMYIB2zCCAdcCAQEwUTA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDALBglghkgBZQMEAgGggfwwGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0yNjEwMDIyMTAwMzdaMC8GCSqGSIb3DQEJBDEiBCD3qS8wXmmQ1GqBUrgVmCcK5x0mICrATQyB2t18xus8cTCBjgYLKoZIhvcNAQkQAi8xfzB9MHsweQQghfknvAerYsrDtENWwQ78gbLGiD/aernm2HDZ0TrNBbcwVTA9pD swOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCgYIKoZIzj0EAwIEZzBlAjAdYZf59GFLUDYTgRN4Zoo8Cj3KDx9EyvmKTkaUCLij4hb0F2rOJZaR8bbtfwzb7WUCMQDdTHFS1DHH5u3H+9MOFM8EOTjTdx6Uz6NVyExcQkhaibjhIBMSxSCHD9mtJTON9vU="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"UGYwqmbVRBGI803yLAdgv+h/ySISYwST68n/Ozp6HUk="},"signature":"MEUCIEIxQq0k3hVELLilf5MleVtCUlUvdMI0RcxgG27tNxAmAiEAqjR07e/arpX8LPXyYp1iU8/jzqn5zXMgsQLqbEe2VAY="}} ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.d4BgQJ/_old 2026-10-06 19:16:01.890544323 +0200 +++ /var/tmp/diff_new_pack.d4BgQJ/_new 2026-10-06 19:16:01.894544491 +0200 @@ -1,6 +1,6 @@ -mtime: 1788383158 -commit: c51ef2be22316d64b8dcd5a6f60f2964b2c6c12824b5a7f0a0b455de1dbc09e4 +mtime: 1791197397 +commit: 215d3b003bbb711013ff1382c4a3814a24d7fa41cca049803a202b458cb4e4d4 url: https://src.opensuse.org/python-interpreters/python315 -revision: c51ef2be22316d64b8dcd5a6f60f2964b2c6c12824b5a7f0a0b455de1dbc09e4 +revision: 215d3b003bbb711013ff1382c4a3814a24d7fa41cca049803a202b458cb4e4d4 projectscmsync: https://src.opensuse.org/python-interpreters/_ObsPrj ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-10-05 12:49:57.000000000 +0200 @@ -0,0 +1,5 @@ +*.obscpio +*.osc +_build.* +.pbuild +python315-*-build/
