Kernels:
Trusted publisher
Uploaded using `kernel-builder`.
Browse files- build/torch212-cxx11-cu130-x86_64-linux/{_flash_mla_cuda_8a730d9.abi3.so → _flash_mla_cuda_addf474.abi3.so} +2 -2
- build/torch212-cxx11-cu130-x86_64-linux/_ops.py +3 -3
- build/torch212-cxx11-cu130-x86_64-linux/flash_mla/__init__.py +0 -26
- build/torch212-cxx11-cu130-x86_64-linux/metadata.json +6 -6
- build/torch212-cxx11-cu130-x86_64-linux/metadata.json.sigstore +1 -1
- build/torch212-cxx11-cu132-x86_64-linux/{_flash_mla_cuda_8a730d9.abi3.so → _flash_mla_cuda_addf474.abi3.so} +2 -2
- build/torch212-cxx11-cu132-x86_64-linux/_ops.py +3 -3
- build/torch212-cxx11-cu132-x86_64-linux/flash_mla/__init__.py +0 -26
- build/torch212-cxx11-cu132-x86_64-linux/metadata.json +6 -6
- build/torch212-cxx11-cu132-x86_64-linux/metadata.json.sigstore +1 -1
- build/torch213-cxx11-cu130-x86_64-linux/{_flash_mla_cuda_8a730d9.abi3.so → _flash_mla_cuda_addf474.abi3.so} +1 -1
- build/torch213-cxx11-cu130-x86_64-linux/_ops.py +3 -3
- build/torch213-cxx11-cu130-x86_64-linux/flash_mla/__init__.py +0 -26
- build/torch213-cxx11-cu130-x86_64-linux/metadata.json +6 -6
- build/torch213-cxx11-cu130-x86_64-linux/metadata.json.sigstore +1 -1
- build/torch213-cxx11-cu132-x86_64-linux/{_flash_mla_cuda_8a730d9.abi3.so → _flash_mla_cuda_addf474.abi3.so} +1 -1
- build/torch213-cxx11-cu132-x86_64-linux/_ops.py +3 -3
- build/torch213-cxx11-cu132-x86_64-linux/flash_mla/__init__.py +0 -26
- build/torch213-cxx11-cu132-x86_64-linux/metadata.json +6 -6
- build/torch213-cxx11-cu132-x86_64-linux/metadata.json.sigstore +1 -1
- build/torch214-cxx11-cu130-x86_64-linux/__init__.py +163 -0
- build/torch214-cxx11-cu130-x86_64-linux/_flash_mla_cuda_addf474.abi3.so +3 -0
- build/torch214-cxx11-cu130-x86_64-linux/_ops.py +9 -0
- build/torch214-cxx11-cu130-x86_64-linux/flash_mla_interface.py +435 -0
- build/torch214-cxx11-cu130-x86_64-linux/metadata.json +35 -0
- build/torch214-cxx11-cu130-x86_64-linux/metadata.json.sigstore +1 -0
- build/torch214-cxx11-cu132-x86_64-linux/__init__.py +163 -0
- build/torch214-cxx11-cu132-x86_64-linux/_flash_mla_cuda_addf474.abi3.so +3 -0
- build/torch214-cxx11-cu132-x86_64-linux/_ops.py +9 -0
- build/torch214-cxx11-cu132-x86_64-linux/flash_mla_interface.py +435 -0
- build/torch214-cxx11-cu132-x86_64-linux/metadata.json +35 -0
- build/torch214-cxx11-cu132-x86_64-linux/metadata.json.sigstore +1 -0
build/torch212-cxx11-cu130-x86_64-linux/{_flash_mla_cuda_8a730d9.abi3.so → _flash_mla_cuda_addf474.abi3.so}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f0fc9c8edfe383477584b5673b93fb6e0b0259e3976b9a18f387c3c4c274d6ca
|
| 3 |
+
size 7474008
|
build/torch212-cxx11-cu130-x86_64-linux/_ops.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
| 1 |
import torch
|
| 2 |
-
from . import
|
| 3 |
-
ops = torch.ops.
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
-
return f"
|
|
|
|
| 1 |
import torch
|
| 2 |
+
from . import _flash_mla_cuda_addf474
|
| 3 |
+
ops = torch.ops._flash_mla_cuda_addf474
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
+
return f"_flash_mla_cuda_addf474::{op_name}"
|
build/torch212-cxx11-cu130-x86_64-linux/flash_mla/__init__.py
DELETED
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
import ctypes
|
| 2 |
-
import importlib.util
|
| 3 |
-
import sys
|
| 4 |
-
from pathlib import Path
|
| 5 |
-
from types import ModuleType
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
def _import_from_path(file_path: Path) -> ModuleType:
|
| 9 |
-
# We cannot use the module name as-is, after adding it to `sys.modules`,
|
| 10 |
-
# it would also be used for other imports. So, we make a module name that
|
| 11 |
-
# depends on the path for it to be unique using the hex-encoded hash of
|
| 12 |
-
# the path.
|
| 13 |
-
path_hash = "{:x}".format(ctypes.c_size_t(hash(file_path.absolute())).value)
|
| 14 |
-
module_name = path_hash
|
| 15 |
-
spec = importlib.util.spec_from_file_location(module_name, file_path)
|
| 16 |
-
if spec is None:
|
| 17 |
-
raise ImportError(f"Cannot load spec for {module_name} from {file_path}")
|
| 18 |
-
module = importlib.util.module_from_spec(spec)
|
| 19 |
-
if module is None:
|
| 20 |
-
raise ImportError(f"Cannot load module {module_name} from spec")
|
| 21 |
-
sys.modules[module_name] = module
|
| 22 |
-
spec.loader.exec_module(module) # type: ignore
|
| 23 |
-
return module
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
globals().update(vars(_import_from_path(Path(__file__).parent.parent / "__init__.py")))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
build/torch212-cxx11-cu130-x86_64-linux/metadata.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
| 1 |
{
|
| 2 |
"name": "flash-mla",
|
| 3 |
-
"id": "
|
| 4 |
"version": 1,
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
|
|
|
| 7 |
"backend": {
|
| 8 |
"type": "cuda",
|
| 9 |
"archs": [
|
|
@@ -15,20 +16,19 @@
|
|
| 15 |
"algorithm": "sha256",
|
| 16 |
"files": {
|
| 17 |
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 18 |
-
"
|
| 19 |
-
"_ops.py": "
|
| 20 |
-
"flash_mla/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 21 |
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
}
|
| 23 |
},
|
| 24 |
"provenance": {
|
| 25 |
"kernel-builder": {
|
| 26 |
"version": "0.17.0-dev0",
|
| 27 |
-
"
|
| 28 |
"dirty": false
|
| 29 |
},
|
| 30 |
"kernel": {
|
| 31 |
-
"
|
| 32 |
"dirty": false
|
| 33 |
}
|
| 34 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"name": "flash-mla",
|
| 3 |
+
"id": "_flash_mla_cuda_addf474",
|
| 4 |
"version": 1,
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
| 7 |
+
"kernel-depends": [],
|
| 8 |
"backend": {
|
| 9 |
"type": "cuda",
|
| 10 |
"archs": [
|
|
|
|
| 16 |
"algorithm": "sha256",
|
| 17 |
"files": {
|
| 18 |
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 19 |
+
"_flash_mla_cuda_addf474.abi3.so": "8Pycjt/jg0d1hLVnO5P7bgsCWeOXa5oY84fDxMJ01so=",
|
| 20 |
+
"_ops.py": "127vMzGPzwgnEABQxo12emwqoX29KOApmtNgy+n0QPs=",
|
|
|
|
| 21 |
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
}
|
| 23 |
},
|
| 24 |
"provenance": {
|
| 25 |
"kernel-builder": {
|
| 26 |
"version": "0.17.0-dev0",
|
| 27 |
+
"commit": "081dcd473f8eca27226eef1f9c47c45b86c756b5",
|
| 28 |
"dirty": false
|
| 29 |
},
|
| 30 |
"kernel": {
|
| 31 |
+
"commit": "addf4741fafb55b4c101b15985dfaeea7c7c2f3a",
|
| 32 |
"dirty": false
|
| 33 |
}
|
| 34 |
}
|
build/torch212-cxx11-cu130-x86_64-linux/metadata.json.sigstore
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHTDCCBtGgAwIBAgIUffTbRgnsy8HnXUtFu71GGArYoyIwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNzA4MTAzNzQwWhcNMjYwNzA4MTA0NzQwWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZ6De/1+BWVr6Ni50cJKuL6EAJh+1bifSswvgDfs7bdbghBKkN8Du2RCJTQUEbL8VGIItZMNn7OyyinPvRVnEyaOCBfAwggXsMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUT5Iw2Y1NEn6dqTg67ZMp/BuxyQYwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoOGE3MzBkOTZjMzc1NjBjY2YxZDNlMDlmN2JiY2NkYzg4NjgxOGYzMzATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoOGE3MzBkOTZjMzc1NjBjY2YxZDNlMDlmN2JiY2NkYzg4NjgxOGYzMzAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoOGE3MzBkOTZjMzc1NjBjY2YxZDNlMDlmN2JiY2NkYzg4NjgxOGYzMzAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDhhNzMwZDk2YzM3NTYwY2NmMWQzZTA5ZjdiYmNjZGM4ODY4MThmMzMwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMjg5MzEyMDM4MjcvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABn0FOBmMAAAQDAEcwRQIhAKfDyABhoI+rpJdC6XvZfG5a80rSfQ/kGxookjkYjbQuAiBcToTFro3thSlubiyVE4ezsuZpMByuRecVeK9awXOrljAKBggqhkjOPQQDAwNpADBmAjEA/aFTCA2i/Ov4stMK3HMqPddwYZ+9ezSLDvdrkMHWsF0EtIpctMsqcjdraRxq32lrAjEA/vjfSBKlHbNZZzI2dLs+Z235WuqNnzZNTIbHTnJtIuppAUznarL3IWuGjnZhz74E"},"tlogEntries":[{"logIndex":"2114574764","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1783507060","inclusionPromise":{"signedEntryTimestamp":"MEUCICK7QscJpSVZEtAsBzMl4uC7W14O4uR4znQvqw7S0WqKAiEArIUK0FiMXj6XJo+dJtkWHD2dFOXbkM59l1NMb5LBDmc="},"inclusionProof":{"logIndex":"1992670502","rootHash":"quSgiUVCauTe/8zbkHVqou9ybbzgmizmNdbCMpoYDZM=","treeSize":"1992670691","hashes":["FrMY/P4tgTMt3eLoaEmh1FCvPrRvXb86Zr3mXUMMGpY=","LnB1hKbmUAHexFtx6mHH229LdkVVJXLi5e7fNXnRoF4=","CmqEX2BjVaNjMs9Q7/MXvfB8tAErsCRT43roDfzFZaM=","F2z6yp1nQqaeLzbZndKslK8ZUivibKS3SUh3d5bWklY=","CUFR4/cjnJeQaVlm4E+HLVnFmcU3lAuFU3ajlR7TuDU=","6fIXU/OYKnNz+XcJ4ogCarqz5VK/rsaox/VpdoqsVSE=","807fDtDU1UdBzhI/kiym3i9Lrc5/CPyUCHfqG43poKs=","ep/W8etQyTEAMHeIpxwsEkiFHXakTkMO6v9J8nS9IL8=","yZx2kIljyUY4zzm7pWcGArMHGcG1zZoKWynvCVTowmY=","IhwR9l43ny0KJ1y1fymOgCnkzwUq8jLtHXzxVbKehmk=","NolxktVEcnZy1b3Zl4sv3L8CE3yG13+dXQo7wqFK9s0=","Dv4JQvsaeXTH3f9u4Roy06Wy7KOt0OpIEtLN9O/c9ZI=","ngWRrVWsAhKTCsdKG0MKsyUIJu+A5lsgpNATebdfZow=","OJy7NMtVJ/9Px/edi0+OYsvFcjNSaRbLGBs3V6PzQgw=","xRWlV3AK+dyzsYcMGS68cyFtF0eVnth3UveHOLqnJPQ=","ygozRdjhEq8EKpY3r/eSJ/LoGZpxIa5exdqUlj6ZuRo=","frI9BMUdqa/KPLUCZ9yfDzZ2Z6tglf7SvThMJqEFBKU=","Bcvbbu+tDL+zr1H2q26c2ATmVu7v/f7JIFweUu7qDK8=","WajL3ZhY6ZX9meV3VTH9TkrbM31OF4o6+7foL0Uf6PI=","cyKMKBvHkQtwb2xR5svh+YppANOVdn7X8t4DuKMxICA=","+/VZ56MsIPxMiyLAodzKXo5TEWdQp36z89qLhpzloAo=","daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=","DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n1992670691\nquSgiUVCauTe/8zbkHVqou9ybbzgmizmNdbCMpoYDZM=\n\n— rekor.sigstore.dev wNI9ajBGAiEAoT/oLlZ40efElaBJTvbw4hFRlyaCoxFEU7A4ZmPSvu4CIQDO/+QNbA4RV6i6Rke65+FJSSFJFU6MiBKlSCZUwIMcfA==\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI3OTc3NTE0ZDRkNzI1ZWZlNDgwOTA4NjlmMWM3ZDQ5NmJmM2JkMmFiODI1NGQyMjk4ZDgxZDA0MTNjZGE1NTE1In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJQkFnNEtQTy9zTU9jeVpjc2NYNVd5aFU0dEVKWHhKajBnR2R1bjUzencveEFpQmpNSWNtSUVIdkhYWmx0UXcwZUhJL29YZU9aRTh5Z1cycVVHdFF1bkpoM1E9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFVSRU5EUW5SSFowRjNTVUpCWjBsVlptWlVZbEpuYm5ONU9FaHVXRlYwUm5VM01VZEhRWEpaYjNsSmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDU2UVRSTlZFRjZUbnBSZDFkb1kwNU5hbGwzVG5wQk5FMVVRVEJPZWxGM1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZhTmtSbEx6RXJRbGRXY2paT2FUVXdZMHBMZFV3MlJVRkthQ3N4WW1sbVUzTjNkbWNLUkdaek4ySmtZbWRvUWt0clRqaEVkVEpTUTBwVVVWVkZZa3c0VmtkSlNYUmFUVTV1TjA5NWVXbHVVSFpTVm01RmVXRlBRMEptUVhkbloxaHpUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZVTlVsM0NqSlpNVTVGYmpaa2NWUm5OamRhVFhBdlFuVjRlVkZaZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOVBSMFV6VFhwQ2EwOVVXbXBOZW1NeFRtcENhbGt5V1hoYVJFNXNDazFFYkcxT01rcHBXVEpPYTFsNlp6Uk9hbWQ0VDBkWmVrMTZRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDlIUlROTmVrSnJUMVJhYWsxNll6Rk9ha0pxV1RKWmVGcEVUbXhOUkd4dFRqSkthVmt5VG1zS1dYcG5ORTVxWjNoUFIxbDZUWHBCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDlIUlROTmVrSnJUMVJhYWsxNll6Rk9ha0pxV1RKWmVGcEVUbXdLVFVSc2JVNHlTbWxaTWs1cldYcG5ORTVxWjNoUFIxbDZUWHBCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUm9hRTU2VFhjS1drUnJNbGw2VFROT1ZGbDNXVEpPYlUxWFVYcGFWRUUxV21wa2FWbHRUbXBhUjAwMFQwUlpORTFVYUcxTmVrMTNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOYW1jMVRYcEZlVTFFVFRSTmFtTjJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwWjFsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTT0VKSWIwRUtaVUZDTWtGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtNHdSazlDYlUxQlFVRlJSQXBCUldOM1VsRkphRUZMWmtSNVFVSm9iMGtyY25CS1pFTTJXSFphWmtjMVlUZ3djbE5tVVM5clIzaHZiMnRxYTFscVlsRjFRV2xDWTFSdlZFWnliek4wQ21oVGJIVmlhWGxXUlRSbGVuTjFXbkJOUW5sMVVtVmpWbVZMT1dGM1dFOXliR3BCUzBKblozRm9hMnBQVUZGUlJFRjNUbkJCUkVKdFFXcEZRUzloUmxRS1EwRXlhUzlQZGpSemRFMUxNMGhOY1ZCa1pIZFpXaXM1WlhwVFRFUjJaSEpyVFVoWGMwWXdSWFJKY0dOMFRYTnhZMnBrY21GU2VIRXpNbXh5UVdwRlFRb3ZkbXBtVTBKTGJFaGlUbHBhZWtreVpFeHpLMW95TXpWWGRYRk9ibnBhVGxSSllraFVia3AwU1hWd2NFRlZlbTVoY2t3elNWZDFSMnB1V21oNk56UkZDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgj301T5mCUI/QPSR2IQ+wLfWgMrfFhyuLu3+xXsTrs2kCFGjXQCaHzAs5jAZ5TbtaQIgKA5XtGA8yMDI2MDcwODEwMzc0MFowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwNzA4MTAzNzQwWjAvBgkqhkiG9w0BCQQxIgQgLP1N05iaNpz+0XbXPdDmXllYGop2rj+htPNWygc1JgswgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIwTVQ5ViUQB/wZr4xSbikKvyEJv3cRg/1+GDbcjwGK7SDUKdiOoLblWynGcB/XJy5pAjEA4LgJEESsnJmA1QV2md++ed97z+GI706U+Pi36KUWKM6N1XcFlCNTotF0UoxzSKi9"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"eXdRTU1yXv5ICQhp8cfUlr870quCVNIpjYHQQTzaVRU="},"signature":"MEQCIBAg4KPO/sMOcyZcscX5WyhU4tEJXxJj0gGdun53zw/xAiBjMIcmIEHvHXZltQw0eHI/oXeOZE8ygW2qUGtQunJh3Q=="}}
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHSzCCBtGgAwIBAgIUMF1y1/9HiG3YfiABkmS82eoTxgQwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwODI3MDY1MDQzWhcNMjYwODI3MDcwMDQzWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEO4fpvRs6xHzWehJTvkpbRycbrTeKIyNAv7mHFBOd2ek5AfRZJ30v45MTyjAxFrnc60iAfEy3ZMH2Rouh0HNuHqOCBfAwggXsMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUDH95ZyB4bg60fb3WN//9dhGc+cUwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKGFkZGY0NzQxZmFmYjU1YjRjMTAxYjE1OTg1ZGZhZWVhN2M3YzJmM2EwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMzMwNDUzODQwMTMvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoEH8OIkAAAQDAEcwRQIgOUQJms/EzL+INp4Xodu8cdprUo1Rd65QuEt3BRW3DY8CIQC7m/Ch5DLtnt/yLumX0HY8JfF0Dqz5gc4fRm278+WQfzAKBggqhkjOPQQDAwNoADBlAjEA0wsjXgyPPWQ17bkqQjE3BqvZa2t3Knbo5YPSul821BVm0Y/y5arTwZTZag46CqoPAjAeqYajYDTdWMFe+qC5qHAE6rFaTMH7EysfQU+KnIwLQINwquHhaLdBJ8oZGvkmSXI="}, "tlogEntries":[{"logIndex":"2613807432", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1787813444", "inclusionPromise":{"signedEntryTimestamp":"MEYCIQCive3Tn+jnDTlYh9QbD+63TGkjPeTRy/kvM1T8/kHoaQIhALBaXk5v/YquolsMpc7h+Nh1f865ptyGHXWuqPgIs5LS"}, "inclusionProof":{"logIndex":"2491903170", "rootHash":"WVytmbX4hpqhZ5rZrrapo8OjNUCXaPFt5K7dHWlvY1M=", "treeSize":"2491903230", "hashes":["cWPpLmZ8p7ymJyba9CamkENJxFNsk9dg6jCTfdoUwC0=", "rRXzeWmBQvKiCb6Jd4zH3DrkSlQu3jNoda9dx5/LjKU=", "c0g3Y+4M0ym3k4wCBtnnSymZfFdyNbrg30KoFtTyCNk=", "JBXPo2lx2dxWtz6evL9MpkORs5gr811o6qnRe6CII0k=", "IKXCYJvRo9puT5pb+9R0V/2kF4WCktU2nvMhIxm30io=", "wbalCkg5DLTQU2nicJjBvx2WyP2afsFb3O4m+EYz0VA=", "ZiRsDZ3i0emxpXAdM0id6ZkgsDrRFfNqkDEofmE3hfM=", "tKPpU2/nFxCHtVzY2Hn/PHdQK7qhklbfjkcDtWqSJSM=", "+ZQuv3HoztHuVw6w+Vx664wPmWOB2e4ENHNNC0wEkSs=", "pVbpvJox+ivHtciMx4yNfvu2rLQjhrVADeeESXutjGM=", "AQSNk7LiajM2R60yCNOFer58otd41w8EZeNGjIlrmKY=", "2iu6MtbtwIBPWceOVpEntK/ScYeDCwQqeef9T+ZN1rg=", "PxB3thBKvs/N/+byXE6INhKRq76cWuFxeRGfVH2nJIo=", "vdSNqW8JzoTD5q4Kg73sWD1h0oayYiUaSbfeC6nVz18=", "E7AEzQrWJL3fkxC6doP8J8+b69/ILUYXJjzAAPrp8Oo=", "7TfDCaMWgEwSJEZd/e33b24919rF4IDJLmbqNNRNhZs=", "0HfdxDt/zGugZLIuHasrdLEW9s8OaTykSSqBEDFQXdw=", "SndbMKVtcTenAkwi2JBfGzD+mhexp1qJbRIY+A1JRIU=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2491903230\nWVytmbX4hpqhZ5rZrrapo8OjNUCXaPFt5K7dHWlvY1M=\n\n— rekor.sigstore.dev wNI9ajBFAiBVV84e0R99KxJOevdM5phQvY/dTgRGEwgBvDQ6ZfQukwIhAPceow8Jim7PtXODFMWMJpy1+XA7GEB7cL6TIXf6rGND\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI1ZTQ1YzQ4NWIwNWNlYTc1M2I3YzhkZDEyY2RjZWViNGU5MzM0NGRlODQ3NDAyNWQwNmMyNDhmOTAzYjhlYWRlIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJQWhCM2RNQUdLSmdxSG9oRjg3SS92QUpwYUhpWVBZWkFEWW8xdndDZUEyaUFpRUEwVnZPOHFtZS9qc0lucWxwY1BXem9ZalE0YUd4endidnR5VUxYSkNHVEU0PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRla05EUW5SSFowRjNTVUpCWjBsVlRVWXhlVEV2T1VocFJ6TlpabWxCUW10dFV6Z3laVzlVZUdkUmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlFU1ROTlJGa3hUVVJSZWxkb1kwNU5hbGwzVDBSSk0wMUVZM2ROUkZGNlYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZQTkdad2RsSnpObmhJZWxkbGFFcFVkbXR3WWxKNVkySnlWR1ZMU1hsT1FYWTNiVWdLUmtKUFpESmxhelZCWmxKYVNqTXdkalExVFZSNWFrRjRSbkp1WXpZd2FVRm1SWGt6V2sxSU1sSnZkV2d3U0U1MVNIRlBRMEptUVhkbloxaHpUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZFU0RrMUNscDVRalJpWnpZd1ptSXpWMDR2THpsa2FFZGpLMk5WZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOVpWMUpyV21wUk0wNUVSbTFaVjFwcFRsUldhVTVIVFhoTlJFWnBDazFVVlRWUFJGWnJXbTFHYkZwWFJUTlplbVJxVFcxWmVsbFVRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMWxYVW10YWFsRXpUa1JHYlZsWFdtbE9WRlpwVGtkTmVFMUVSbWxOVkZVMVQwUldhMXB0Um13S1dsZEZNMWw2WkdwTmJWbDZXVlJCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMWxYVW10YWFsRXpUa1JHYlZsWFdtbE9WRlpwVGtkTmVFMUVSbWtLVFZSVk5VOUVWbXRhYlVac1dsZEZNMWw2WkdwTmJWbDZXVlJCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwZEdhMXBIV1RBS1RucFJlRnB0Um0xWmFsVXhXV3BTYWsxVVFYaFpha1V4VDFSbk1WcEhXbWhhVjFab1RqSk5NMWw2U20xTk1rVjNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOZWsxM1RrUlZlazlFVVhkTlZFMTJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwWjFsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTT0VKSWIwRUtaVUZDTWtGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtOUZTRGhQU1d0QlFVRlJSQXBCUldOM1VsRkpaMDlWVVVwdGN5OUZla3dyU1U1d05GaHZaSFU0WTJSd2NsVnZNVkprTmpWUmRVVjBNMEpTVnpORVdUaERTVkZETjIwdlEyZzFSRXgwQ201MEwzbE1kVzFZTUVoWk9FcG1SakJFY1hvMVoyTTBabEp0TWpjNEsxZFJabnBCUzBKblozRm9hMnBQVUZGUlJFRjNUbTlCUkVKc1FXcEZRVEIzYzJvS1dHZDVVRkJYVVRFM1ltdHhVV3BGTTBKeGRscGhNblF6UzI1aWJ6VlpVRk4xYkRneU1VSldiVEJaTDNrMVlYSlVkMXBVV21Gbk5EWkRjVzlRUVdwQlpRcHhXV0ZxV1VSVVpGZE5SbVVyY1VNMWNVaEJSVFp5Um1GVVRVZzNSWGx6WmxGVkswdHVTWGRNVVVsT2QzRjFTR2hoVEdSQ1NqaHZXa2QyYTIxVFdFazlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyDADAgEAMIICvwYJKoZIhvcNAQcCoIICsDCCAqwCAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgYJOnFpedTUmgSnQlAEPMK243rJp46QkSrrxgHKgvLOMCFB/1CXxhmohl4kCw2LNs++P1j8o8GA8yMDI2MDgyNzA2NTA0M1owAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdowggHWAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwODI3MDY1MDQzWjAvBgkqhkiG9w0BCQQxIgQgs9K0oWNl2iidRWXIRn6wmH6wR9NCCIs35QmNT4qeG2swgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGYwZAIwM5Uyz3qAUP1Sw7BtbnTQ75Xy5FOmV0xXmCRa/EzqiNdc085KrnrkWpo2Jo+Uabd1AjB3KiXzI1T9A5O/Pd6trWZUEfw5w0rRBSMRfHtNnk9MIcJDz/LT3YC5ckdaFo5Dy38="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"XkXEhbBc6nU7fI3RLNzutOkzRN6EdAJdBsJI+QO46t4="}, "signature":"MEUCIAhB3dMAGKJgqHohF87I/vAJpaHiYPYZADYo1vwCeA2iAiEA0VvO8qme/jsInqlpcPWzoYjQ4aGxzwbvtyULXJCGTE4="}}
|
build/torch212-cxx11-cu132-x86_64-linux/{_flash_mla_cuda_8a730d9.abi3.so → _flash_mla_cuda_addf474.abi3.so}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:02dbb09c3b2973702fda950899581475d9e1236162797143d3cfb22f44d921a8
|
| 3 |
+
size 7420144
|
build/torch212-cxx11-cu132-x86_64-linux/_ops.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
| 1 |
import torch
|
| 2 |
-
from . import
|
| 3 |
-
ops = torch.ops.
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
-
return f"
|
|
|
|
| 1 |
import torch
|
| 2 |
+
from . import _flash_mla_cuda_addf474
|
| 3 |
+
ops = torch.ops._flash_mla_cuda_addf474
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
+
return f"_flash_mla_cuda_addf474::{op_name}"
|
build/torch212-cxx11-cu132-x86_64-linux/flash_mla/__init__.py
DELETED
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
import ctypes
|
| 2 |
-
import importlib.util
|
| 3 |
-
import sys
|
| 4 |
-
from pathlib import Path
|
| 5 |
-
from types import ModuleType
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
def _import_from_path(file_path: Path) -> ModuleType:
|
| 9 |
-
# We cannot use the module name as-is, after adding it to `sys.modules`,
|
| 10 |
-
# it would also be used for other imports. So, we make a module name that
|
| 11 |
-
# depends on the path for it to be unique using the hex-encoded hash of
|
| 12 |
-
# the path.
|
| 13 |
-
path_hash = "{:x}".format(ctypes.c_size_t(hash(file_path.absolute())).value)
|
| 14 |
-
module_name = path_hash
|
| 15 |
-
spec = importlib.util.spec_from_file_location(module_name, file_path)
|
| 16 |
-
if spec is None:
|
| 17 |
-
raise ImportError(f"Cannot load spec for {module_name} from {file_path}")
|
| 18 |
-
module = importlib.util.module_from_spec(spec)
|
| 19 |
-
if module is None:
|
| 20 |
-
raise ImportError(f"Cannot load module {module_name} from spec")
|
| 21 |
-
sys.modules[module_name] = module
|
| 22 |
-
spec.loader.exec_module(module) # type: ignore
|
| 23 |
-
return module
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
globals().update(vars(_import_from_path(Path(__file__).parent.parent / "__init__.py")))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
build/torch212-cxx11-cu132-x86_64-linux/metadata.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
| 1 |
{
|
| 2 |
"name": "flash-mla",
|
| 3 |
-
"id": "
|
| 4 |
"version": 1,
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
|
|
|
| 7 |
"backend": {
|
| 8 |
"type": "cuda",
|
| 9 |
"archs": [
|
|
@@ -15,20 +16,19 @@
|
|
| 15 |
"algorithm": "sha256",
|
| 16 |
"files": {
|
| 17 |
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 18 |
-
"
|
| 19 |
-
"_ops.py": "
|
| 20 |
-
"flash_mla/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 21 |
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
}
|
| 23 |
},
|
| 24 |
"provenance": {
|
| 25 |
"kernel-builder": {
|
| 26 |
"version": "0.17.0-dev0",
|
| 27 |
-
"
|
| 28 |
"dirty": false
|
| 29 |
},
|
| 30 |
"kernel": {
|
| 31 |
-
"
|
| 32 |
"dirty": false
|
| 33 |
}
|
| 34 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"name": "flash-mla",
|
| 3 |
+
"id": "_flash_mla_cuda_addf474",
|
| 4 |
"version": 1,
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
| 7 |
+
"kernel-depends": [],
|
| 8 |
"backend": {
|
| 9 |
"type": "cuda",
|
| 10 |
"archs": [
|
|
|
|
| 16 |
"algorithm": "sha256",
|
| 17 |
"files": {
|
| 18 |
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 19 |
+
"_flash_mla_cuda_addf474.abi3.so": "AtuwnDspc3Av2pUImVgUddnhI2FieXFD08+yL0TZIag=",
|
| 20 |
+
"_ops.py": "127vMzGPzwgnEABQxo12emwqoX29KOApmtNgy+n0QPs=",
|
|
|
|
| 21 |
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
}
|
| 23 |
},
|
| 24 |
"provenance": {
|
| 25 |
"kernel-builder": {
|
| 26 |
"version": "0.17.0-dev0",
|
| 27 |
+
"commit": "081dcd473f8eca27226eef1f9c47c45b86c756b5",
|
| 28 |
"dirty": false
|
| 29 |
},
|
| 30 |
"kernel": {
|
| 31 |
+
"commit": "addf4741fafb55b4c101b15985dfaeea7c7c2f3a",
|
| 32 |
"dirty": false
|
| 33 |
}
|
| 34 |
}
|
build/torch212-cxx11-cu132-x86_64-linux/metadata.json.sigstore
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHSjCCBtCgAwIBAgIURKfrgTGWQBYf8vHcnNU+tv41TqEwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNzA4MTAzNzQyWhcNMjYwNzA4MTA0NzQyWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8vuboiGdM6y4KEhC7qU4u2FRAKZpR8HVmF+fp/LHFeTnWaFifFOz+SYkn65834/C2tEUbb50lvCNEqjjiozNiaOCBe8wggXrMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQU2p9kPyfwRBeGxk+2gMqB65dibJgwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoOGE3MzBkOTZjMzc1NjBjY2YxZDNlMDlmN2JiY2NkYzg4NjgxOGYzMzATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoOGE3MzBkOTZjMzc1NjBjY2YxZDNlMDlmN2JiY2NkYzg4NjgxOGYzMzAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoOGE3MzBkOTZjMzc1NjBjY2YxZDNlMDlmN2JiY2NkYzg4NjgxOGYzMzAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDhhNzMwZDk2YzM3NTYwY2NmMWQzZTA5ZjdiYmNjZGM4ODY4MThmMzMwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMjg5MzEyMDM4MjcvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABn0FODm8AAAQDAEYwRAIgHZhTKpw7QsMv1ufee1E4fXF7F+lxPML9ZqPzaNPlMqACICCsqJIagh09cOwtVepQGqonpb+2H+yii4dxLMewlvT7MAoGCCqGSM49BAMDA2gAMGUCMGt1AMNESKJGcGO4VBrvEAxmgu4HRRMSsna1ka9PObI7aa+9Loy5nY+39WmdLnsJggIxAOpknNx1Px7RRmiS+FW0lTfDWhhHBbCqgLaF8gun8EtfzXt4CI/LT3hmz4CQxXEhMg=="},"tlogEntries":[{"logIndex":"2114575263","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1783507062","inclusionPromise":{"signedEntryTimestamp":"MEYCIQCLfQU1mvn+WCcuv8GbBRX7BVxUMHzRiNX9XAbFyFH10wIhAKqOOaHtMyvxtwa4DrisiA9mCXXyfAyIqC+sMXy3vd8W"},"inclusionProof":{"logIndex":"1992671001","rootHash":"OJEszW7CllNT0kvc5jS4pv6HSMY/oxN4K22Z2jORHLg=","treeSize":"1992671125","hashes":["CoufItBN8SbrqWygHOssSyiEQwIRYo0Trcaoa9k1xeo=","WfLAhL1KG8ztbgEqUtYfYgATZp5+xWoJKOE4EFDdUBg=","QVlpqeAo36ib7OPKM6TO8lwRlgORkCAozIe6qKQeAuY=","ix+DxkiT6OgDGJpx6Q5CKUu24k3ziL8Rufm5BOE04GA=","oj4m8COD26W0wggRBrqoy1IliPzntvOTnTFgUT4CByg=","HKQUQi13gtRVHRLDIWXxLjebgstoCWg84kNb645ZvGk=","g+7OD6BkCeh7PLQULm0dXM5tyTLPEwOLAfmTs70JCdA=","mhdPdf9fxz+lHg/wDGPMdOThelL/qwCfAioC2zZkHNc=","4xLbl/VOdrTYWXnOV1P3Aro+CmzafuLJ9JkI6jHRK60=","2bSh0NZcwpYzH5cGLpjL/wIcnoYyYI+YyhYSbSs+Da8=","IhwR9l43ny0KJ1y1fymOgCnkzwUq8jLtHXzxVbKehmk=","NolxktVEcnZy1b3Zl4sv3L8CE3yG13+dXQo7wqFK9s0=","Dv4JQvsaeXTH3f9u4Roy06Wy7KOt0OpIEtLN9O/c9ZI=","ngWRrVWsAhKTCsdKG0MKsyUIJu+A5lsgpNATebdfZow=","OJy7NMtVJ/9Px/edi0+OYsvFcjNSaRbLGBs3V6PzQgw=","xRWlV3AK+dyzsYcMGS68cyFtF0eVnth3UveHOLqnJPQ=","ygozRdjhEq8EKpY3r/eSJ/LoGZpxIa5exdqUlj6ZuRo=","frI9BMUdqa/KPLUCZ9yfDzZ2Z6tglf7SvThMJqEFBKU=","Bcvbbu+tDL+zr1H2q26c2ATmVu7v/f7JIFweUu7qDK8=","WajL3ZhY6ZX9meV3VTH9TkrbM31OF4o6+7foL0Uf6PI=","cyKMKBvHkQtwb2xR5svh+YppANOVdn7X8t4DuKMxICA=","+/VZ56MsIPxMiyLAodzKXo5TEWdQp36z89qLhpzloAo=","daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=","DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n1992671125\nOJEszW7CllNT0kvc5jS4pv6HSMY/oxN4K22Z2jORHLg=\n\n— rekor.sigstore.dev wNI9ajBEAiBGDmpClafj+Q/ERMPO6pRLT6sXYTGuBuWE0c6aSz7xhgIgJwFxvxRYtTWUsSllXJk0BHo6TuOpnzkDvZz5eR2MfgA=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIwY2ZjYTU2MTIxZjk3ZDYxM2IzMzczMDE4OTk5Y2FmZWU5OGMzM2RkZjY0ODI0ZWI3OWVkMDg1Nzk2NTRjNTYwIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJQW1DNUZCNTFDNGRjQ0gzUU5rK0VwOGlnNmFsSDFLVE8wLzhIcTA4aHVlbUFpRUFqc0RzaVJ6RW5CU0JzWm02NmFwTTJadUJzQmVsU09PNktJQUEwYTA4cjFjPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRha05EUW5SRFowRjNTVUpCWjBsVlVrdG1jbWRVUjFkUlFsbG1PSFpJWTI1T1ZTdDBkalF4VkhGRmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDU2UVRSTlZFRjZUbnBSZVZkb1kwNU5hbGwzVG5wQk5FMVVRVEJPZWxGNVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVU0ZG5WaWIybEhaRTAyZVRSTFJXaEROM0ZWTkhVeVJsSkJTMXB3VWpoSVZtMUdLMllLY0M5TVNFWmxWRzVYWVVacFprWlBlaXRUV1d0dU5qVTRNelF2UXpKMFJWVmlZalV3YkhaRFRrVnhhbXBwYjNwT2FXRlBRMEpsT0hkbloxaHlUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlV5Y0RsckNsQjVabmRTUW1WSGVHc3JNbWROY1VJMk5XUnBZa3BuZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOVBSMFV6VFhwQ2EwOVVXbXBOZW1NeFRtcENhbGt5V1hoYVJFNXNDazFFYkcxT01rcHBXVEpPYTFsNlp6Uk9hbWQ0VDBkWmVrMTZRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDlIUlROTmVrSnJUMVJhYWsxNll6Rk9ha0pxV1RKWmVGcEVUbXhOUkd4dFRqSkthVmt5VG1zS1dYcG5ORTVxWjNoUFIxbDZUWHBCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDlIUlROTmVrSnJUMVJhYWsxNll6Rk9ha0pxV1RKWmVGcEVUbXdLVFVSc2JVNHlTbWxaTWs1cldYcG5ORTVxWjNoUFIxbDZUWHBCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUm9hRTU2VFhjS1drUnJNbGw2VFROT1ZGbDNXVEpPYlUxWFVYcGFWRUUxV21wa2FWbHRUbXBhUjAwMFQwUlpORTFVYUcxTmVrMTNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOYW1jMVRYcEZlVTFFVFRSTmFtTjJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwVVZsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTTjBKSWEwRUtaSGRDTVVGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtNHdSazlFYlRoQlFVRlJSQXBCUlZsM1VrRkpaMGhhYUZSTGNIYzNVWE5OZGpGMVptVmxNVVUwWmxoR04wWXJiSGhRVFV3NVduRlFlbUZPVUd4TmNVRkRTVU5EYzNGS1NXRm5hREE1Q21OUGQzUldaWEJSUjNGdmJuQmlLekpJSzNscGFUUmtlRXhOWlhkc2RsUTNUVUZ2UjBORGNVZFRUVFE1UWtGTlJFRXlaMEZOUjFWRFRVZDBNVUZOVGtVS1UwdEtSMk5IVHpSV1FuSjJSVUY0YldkMU5FaFNVazFUYzI1aE1XdGhPVkJQWWtrM1lXRXJPVXh2ZVRWdVdTc3pPVmR0WkV4dWMwcG5aMGw0UVU5d2F3cHVUbmd4VUhnM1VsSnRhVk1yUmxjd2JGUm1SRmRvYUVoQ1lrTnhaMHhoUmpobmRXNDRSWFJtZWxoME5FTkpMMHhVTTJodGVqUkRVWGhZUldoTlp6MDlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgPtEswJTD0NC9MeFct610evf+Q/LbvY+FBQFRxnFSI3kCFAmPj7u35ayQbQd/Sxs8MR8FAtU2GA8yMDI2MDcwODEwMzc0MlowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwNzA4MTAzNzQyWjAvBgkqhkiG9w0BCQQxIgQgYcwOq54WDDvPKk2S/BmsVK9LD1/5MU7zKP5GzMeJXDMwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIxAMfp6RIcZW96mRhtF5fR9tgV1+LZzA4ENa2wclrItwMKH5X8+Gkk7YOi/m0Jl7Uz1AIwYeWRA7/3/fx/AYneh1iHrV2P+ewJVEe+fpVOIDnCaOrf4+8FH6qCmL1c3Qxez864"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"DPylYSH5fWE7M3MBiZnK/umMM932SCTree0IV5ZUxWA="},"signature":"MEUCIAmC5FB51C4dcCH3QNk+Ep8ig6alH1KTO0/8Hq08huemAiEAjsDsiRzEnBSBsZm66apM2ZuBsBelSOO6KIAA0a08r1c="}}
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHSjCCBtCgAwIBAgIUQYq6SavgthbxSCoBJMoVWLZRpGUwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwODI3MDY1MDQ0WhcNMjYwODI3MDcwMDQ0WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEalafZ09dJvtqNG9uYylMXB9D/kWW1Qf61DMhfM2foPeSqypZFG4nlvqmUUbP6M6YaopPw4uEbW3iUSjIzZI0X6OCBe8wggXrMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUuEtBR/9Cwf/I0U6T7rUZoQvq1YowHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKGFkZGY0NzQxZmFmYjU1YjRjMTAxYjE1OTg1ZGZhZWVhN2M3YzJmM2EwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMzMwNDUzODQwMTMvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoEH8PSwAAAQDAEYwRAIgZyDckhZ85GvYogQoYlNmfzDRnXiGhdWx/8RYEVedrHMCIFCmp8aUSgmnpAnZhwYSFmjaSrNAw8ugmGwE2NfP/v4jMAoGCCqGSM49BAMDA2gAMGUCMQChzRR6TLgypi8ZluvmgvCp68OxfTDBzS8CW78ziyG5gLc0c4T1wpPzMj/0+fkd3SgCMHj+sIzeT9Hmv7h875H4M+GuzPW5/bwa/ejovorMqpIbTieYVYMza5xwymS+noJFww=="}, "tlogEntries":[{"logIndex":"2613807745", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1787813445", "inclusionPromise":{"signedEntryTimestamp":"MEUCIGdWIgw49eIUrKjxfpsA/gpiGIlKSfupwCCoAOVV3bTXAiEAlCMTeIy2BiWTw8g8K0b6nEblnnaIo3pL5r0jdgUS8X8="}, "inclusionProof":{"logIndex":"2491903483", "rootHash":"ft/qOs+FUhyzD1zNx2OHykmyuIpWMD/4ZIVQWbz4CzM=", "treeSize":"2491903539", "hashes":["56q73dNVPO5cwi7BPEaNpTv9RmLUH2KukXj7+c9KxTQ=", "Uk4stcLFWTDfP/3zvOhC13R9yx4ddDgTjN64/4h1lU0=", "/Jf/VcUbR4dwehjoKe8ENU1qmUjxcniPMyBeEoua6ZI=", "O09uR7GDM0UCTdaBYIq38+Vp9s8yQA6brPBHwsysuTI=", "PkQvmHH8Mq4ihR+oP+dd7OJsF+WuedZUlLSK3NOZe20=", "+fc5o9l91rG7A+AE5K6DriaJpofplxoGHSjRyxVXOoo=", "QkK5emTgW/VQ0f1tka76iB72q3Bx7+cquKwj/rPGhkI=", "EXr7E+f9N7OPyMToMGX55dukL6AbIy0CktW73E3EX1s=", "dghXFpDxBBcee5BnA2Mq89wV/cLpvP4UN9f0ZUe7nhA=", "qU85DDOUp82dtOb4v1vcHUkZWZx+yw5oVVqWKzB5L9k=", "+ZQuv3HoztHuVw6w+Vx664wPmWOB2e4ENHNNC0wEkSs=", "pVbpvJox+ivHtciMx4yNfvu2rLQjhrVADeeESXutjGM=", "AQSNk7LiajM2R60yCNOFer58otd41w8EZeNGjIlrmKY=", "2iu6MtbtwIBPWceOVpEntK/ScYeDCwQqeef9T+ZN1rg=", "PxB3thBKvs/N/+byXE6INhKRq76cWuFxeRGfVH2nJIo=", "vdSNqW8JzoTD5q4Kg73sWD1h0oayYiUaSbfeC6nVz18=", "E7AEzQrWJL3fkxC6doP8J8+b69/ILUYXJjzAAPrp8Oo=", "7TfDCaMWgEwSJEZd/e33b24919rF4IDJLmbqNNRNhZs=", "0HfdxDt/zGugZLIuHasrdLEW9s8OaTykSSqBEDFQXdw=", "SndbMKVtcTenAkwi2JBfGzD+mhexp1qJbRIY+A1JRIU=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2491903539\nft/qOs+FUhyzD1zNx2OHykmyuIpWMD/4ZIVQWbz4CzM=\n\n— rekor.sigstore.dev wNI9ajBFAiADbc61E7eJssNV23U9lMGIXArz+9iW5RKXBZPKp3TT8AIhAJf/C7ebTsV5WAS32wKowBKTQqTFXoXBDzLtfrDPEZse\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJmMDhjOTQ5NWUzMzdmZWQ4NzAxOGU4NGY3OTlkOGYxNjk2ZmQwZjE4MTcwNjViYzI5NzEwYmViNWMwNzJhZmY2In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUQ4WmlLOW5xSE5FaFVIVW9tUXpaZkZscDQrWHpiOFpBNFZRckxtUVg2QW53SWdHT0grREhnbzhWUkF4V053MUNYMnVXK3BTcVZUR2dTbngvZ3BCME9RV2VNPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRha05EUW5SRFowRjNTVUpCWjBsVlVWbHhObE5oZG1kMGFHSjRVME52UWtwTmIxWlhURnBTY0VkVmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlFU1ROTlJGa3hUVVJSTUZkb1kwNU5hbGwzVDBSSk0wMUVZM2ROUkZFd1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZoYkdGbVdqQTVaRXAyZEhGT1J6bDFXWGxzVFZoQ09VUXZhMWRYTVZGbU5qRkVUV2dLWmsweVptOVFaVk54ZVhCYVJrYzBibXgyY1cxVlZXSlFOazAyV1dGdmNGQjNOSFZGWWxjemFWVlRha2w2V2trd1dEWlBRMEpsT0hkbloxaHlUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlYxUlhSQ0NsSXZPVU4zWmk5Sk1GVTJWRGR5VlZwdlVYWnhNVmx2ZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOVpWMUpyV21wUk0wNUVSbTFaVjFwcFRsUldhVTVIVFhoTlJFWnBDazFVVlRWUFJGWnJXbTFHYkZwWFJUTlplbVJxVFcxWmVsbFVRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMWxYVW10YWFsRXpUa1JHYlZsWFdtbE9WRlpwVGtkTmVFMUVSbWxOVkZVMVQwUldhMXB0Um13S1dsZEZNMWw2WkdwTmJWbDZXVlJCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMWxYVW10YWFsRXpUa1JHYlZsWFdtbE9WRlpwVGtkTmVFMUVSbWtLVFZSVk5VOUVWbXRhYlVac1dsZEZNMWw2WkdwTmJWbDZXVlJCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwZEdhMXBIV1RBS1RucFJlRnB0Um0xWmFsVXhXV3BTYWsxVVFYaFpha1V4VDFSbk1WcEhXbWhhVjFab1RqSk5NMWw2U20xTk1rVjNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOZWsxM1RrUlZlazlFVVhkTlZFMTJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwVVZsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTTjBKSWEwRUtaSGRDTVVGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtOUZTRGhRVTNkQlFVRlJSQXBCUlZsM1VrRkpaMXA1UkdOcmFGbzROVWQyV1c5blVXOVpiRTV0Wm5wRVVtNVlhVWRvWkZkNEx6aFNXVVZXWldSeVNFMURTVVpEYlhBNFlWVlRaMjF1Q25CQmJscG9kMWxUUm0xcVlWTnlUa0YzT0hWbmJVZDNSVEpPWmxBdmRqUnFUVUZ2UjBORGNVZFRUVFE1UWtGTlJFRXlaMEZOUjFWRFRWRkRhSHBTVWpZS1ZFeG5lWEJwT0Zwc2RYWnRaM1pEY0RZNFQzaG1WRVJDZWxNNFExYzNPSHBwZVVjMVoweGpNR00wVkRGM2NGQjZUV292TUN0bWEyUXpVMmREVFVocUt3cHpTWHBsVkRsSWJYWTNhRGczTlVnMFRTdEhkWHBRVnpVdlluZGhMMlZxYjNadmNrMXhjRWxpVkdsbFdWWlpUWHBoTlhoM2VXMVRLMjV2U2taM2R6MDlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgRPoPbMUEspGH5UH7K3/6rv6EbyP2yBF8cxws8cO5y98CFHs/+QuqtPIQfx9HUjfpYicxFlG/GA8yMDI2MDgyNzA2NTA0NFowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdwwggHYAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwODI3MDY1MDQ0WjAvBgkqhkiG9w0BCQQxIgQg0uFEzFZ5fX5agM2clRnuUHA/eb894P2xNGSfhNEiibowgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGgwZgIxAPw4X6w3GUvBH+z2GsNYk3uU54lBCIzCicmTahELM7y+j6QbE4JOzG2RjtUDU0p+VAIxAJYo+eJLONNYncXuCjHA9FZVhX/+u0smgpISAWLdk/MZf4mH/Q/GLSY2+EjV9jq6Mg=="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"8IyUleM3/thwGOhPeZ2PFpb9DxgXBlvClxC+tcByr/Y="}, "signature":"MEUCIQD8ZiK9nqHNEhUHUomQzZfFlp4+Xzb8ZA4VQrLmQX6AnwIgGOH+DHgo8VRAxWNw1CX2uW+pSqVTGgSnx/gpB0OQWeM="}}
|
build/torch213-cxx11-cu130-x86_64-linux/{_flash_mla_cuda_8a730d9.abi3.so → _flash_mla_cuda_addf474.abi3.so}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
size 7474304
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2bd30e7d44c4a8e7c0455c40016d7e0cb9d86955a50a0af9287d7a6ba95482eb
|
| 3 |
size 7474304
|
build/torch213-cxx11-cu130-x86_64-linux/_ops.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
| 1 |
import torch
|
| 2 |
-
from . import
|
| 3 |
-
ops = torch.ops.
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
-
return f"
|
|
|
|
| 1 |
import torch
|
| 2 |
+
from . import _flash_mla_cuda_addf474
|
| 3 |
+
ops = torch.ops._flash_mla_cuda_addf474
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
+
return f"_flash_mla_cuda_addf474::{op_name}"
|
build/torch213-cxx11-cu130-x86_64-linux/flash_mla/__init__.py
DELETED
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
import ctypes
|
| 2 |
-
import importlib.util
|
| 3 |
-
import sys
|
| 4 |
-
from pathlib import Path
|
| 5 |
-
from types import ModuleType
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
def _import_from_path(file_path: Path) -> ModuleType:
|
| 9 |
-
# We cannot use the module name as-is, after adding it to `sys.modules`,
|
| 10 |
-
# it would also be used for other imports. So, we make a module name that
|
| 11 |
-
# depends on the path for it to be unique using the hex-encoded hash of
|
| 12 |
-
# the path.
|
| 13 |
-
path_hash = "{:x}".format(ctypes.c_size_t(hash(file_path.absolute())).value)
|
| 14 |
-
module_name = path_hash
|
| 15 |
-
spec = importlib.util.spec_from_file_location(module_name, file_path)
|
| 16 |
-
if spec is None:
|
| 17 |
-
raise ImportError(f"Cannot load spec for {module_name} from {file_path}")
|
| 18 |
-
module = importlib.util.module_from_spec(spec)
|
| 19 |
-
if module is None:
|
| 20 |
-
raise ImportError(f"Cannot load module {module_name} from spec")
|
| 21 |
-
sys.modules[module_name] = module
|
| 22 |
-
spec.loader.exec_module(module) # type: ignore
|
| 23 |
-
return module
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
globals().update(vars(_import_from_path(Path(__file__).parent.parent / "__init__.py")))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
build/torch213-cxx11-cu130-x86_64-linux/metadata.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
| 1 |
{
|
| 2 |
"name": "flash-mla",
|
| 3 |
-
"id": "
|
| 4 |
"version": 1,
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
|
|
|
| 7 |
"backend": {
|
| 8 |
"type": "cuda",
|
| 9 |
"archs": [
|
|
@@ -15,20 +16,19 @@
|
|
| 15 |
"algorithm": "sha256",
|
| 16 |
"files": {
|
| 17 |
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 18 |
-
"
|
| 19 |
-
"_ops.py": "
|
| 20 |
-
"flash_mla/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 21 |
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
}
|
| 23 |
},
|
| 24 |
"provenance": {
|
| 25 |
"kernel-builder": {
|
| 26 |
"version": "0.17.0-dev0",
|
| 27 |
-
"
|
| 28 |
"dirty": false
|
| 29 |
},
|
| 30 |
"kernel": {
|
| 31 |
-
"
|
| 32 |
"dirty": false
|
| 33 |
}
|
| 34 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"name": "flash-mla",
|
| 3 |
+
"id": "_flash_mla_cuda_addf474",
|
| 4 |
"version": 1,
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
| 7 |
+
"kernel-depends": [],
|
| 8 |
"backend": {
|
| 9 |
"type": "cuda",
|
| 10 |
"archs": [
|
|
|
|
| 16 |
"algorithm": "sha256",
|
| 17 |
"files": {
|
| 18 |
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 19 |
+
"_flash_mla_cuda_addf474.abi3.so": "K9MOfUTEqOfARVxAAW1+DLnYaVWlCgr5KH16a6lUgus=",
|
| 20 |
+
"_ops.py": "127vMzGPzwgnEABQxo12emwqoX29KOApmtNgy+n0QPs=",
|
|
|
|
| 21 |
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
}
|
| 23 |
},
|
| 24 |
"provenance": {
|
| 25 |
"kernel-builder": {
|
| 26 |
"version": "0.17.0-dev0",
|
| 27 |
+
"commit": "081dcd473f8eca27226eef1f9c47c45b86c756b5",
|
| 28 |
"dirty": false
|
| 29 |
},
|
| 30 |
"kernel": {
|
| 31 |
+
"commit": "addf4741fafb55b4c101b15985dfaeea7c7c2f3a",
|
| 32 |
"dirty": false
|
| 33 |
}
|
| 34 |
}
|
build/torch213-cxx11-cu130-x86_64-linux/metadata.json.sigstore
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHTTCCBtKgAwIBAgIUS+VO9aEdljR6qpsQm5pcQ5+iTxEwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNzA4MTAzNzQ0WhcNMjYwNzA4MTA0NzQ0WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZdymh0LSShxJzORNGWpKQfvBxUSaFErWaPqxAiEj5izXDwdjyzmwuCQNqwwYlgmLSD7Sq7IyP/dKEo0n9eawO6OCBfEwggXtMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQU6n0YMuHUjK5696UQYPxij66qX8IwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoOGE3MzBkOTZjMzc1NjBjY2YxZDNlMDlmN2JiY2NkYzg4NjgxOGYzMzATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoOGE3MzBkOTZjMzc1NjBjY2YxZDNlMDlmN2JiY2NkYzg4NjgxOGYzMzAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoOGE3MzBkOTZjMzc1NjBjY2YxZDNlMDlmN2JiY2NkYzg4NjgxOGYzMzAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDhhNzMwZDk2YzM3NTYwY2NmMWQzZTA5ZjdiYmNjZGM4ODY4MThmMzMwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMjg5MzEyMDM4MjcvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiwYKKwYBBAHWeQIEAgR9BHsAeQB3AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABn0FOFSUAAAQDAEgwRgIhAOm9DHROk8v/x8k1lTMpQUrnmzmpnAa/0vQh4O16H0jrAiEAj6ZczaDR+sgyM8HZGAjFTa5c4ht8Y4NkHxNckTuN0xAwCgYIKoZIzj0EAwMDaQAwZgIxAOxs243Pb1nggLdc4oaSPmxPMcH+EQ2XrabGv5gLgygRTpRDhMxcY0DCugtiLhdb0AIxAMcnhTuTgOhh2quYToijxTwPxeMZenqvkrrctBOcNflPiVBlBIeKs4sxLfSq3ufClQ=="},"tlogEntries":[{"logIndex":"2114575673","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1783507064","inclusionPromise":{"signedEntryTimestamp":"MEYCIQD6CvCJHQQ0rP73kNf0Rsb0fBB/IymKmzEIj/LFk9+LpgIhAPqvIvMv24IweWVcfnCZfqsX2XOQB7JT7wrG0rcZUX1y"},"inclusionProof":{"logIndex":"1992671411","rootHash":"o1D95JKLMHXBIcOiMLj32YBKrYZVICBq1CSzc/9Wmkw=","treeSize":"1992671435","hashes":["8uIKDngR2dhAWhPFkJtzOcbDR6vrbcdk59+wUlOrq2o=","DwcZaiRvnC6cN0cPqwBM9oc9YXy6cEWs6pblQLgQkQc=","LIGrQeXvixN2FMXTXEFJWaNkuhksA6QYYJcu46IVNY0=","9JDDKRT/wGDXGVkDxTRKSmsLdrzHKif9XWWt3SxHgmM=","ODSKCRx9e7B/8IARzaf9ca2vJZVLXGI8JCTDYaXKESk=","ap7p23Y4iQI/ngSVixRTPqIiQFi7dNxP7pnKjZr87ms=","2hLSuiRg47XK9P0c9VpNhsmlQBavk0iRa/TfBUgOz/Y=","/qJRwhRZ7ENU9X0aPXzgwXMkNknFLq9pJVDI9sGP/Vc=","kDewvzZL3/eXTs0JmwpCWlo3tnsjwa4EZJgqrCSM1bI=","OJy7NMtVJ/9Px/edi0+OYsvFcjNSaRbLGBs3V6PzQgw=","xRWlV3AK+dyzsYcMGS68cyFtF0eVnth3UveHOLqnJPQ=","ygozRdjhEq8EKpY3r/eSJ/LoGZpxIa5exdqUlj6ZuRo=","frI9BMUdqa/KPLUCZ9yfDzZ2Z6tglf7SvThMJqEFBKU=","Bcvbbu+tDL+zr1H2q26c2ATmVu7v/f7JIFweUu7qDK8=","WajL3ZhY6ZX9meV3VTH9TkrbM31OF4o6+7foL0Uf6PI=","cyKMKBvHkQtwb2xR5svh+YppANOVdn7X8t4DuKMxICA=","+/VZ56MsIPxMiyLAodzKXo5TEWdQp36z89qLhpzloAo=","daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=","DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n1992671435\no1D95JKLMHXBIcOiMLj32YBKrYZVICBq1CSzc/9Wmkw=\n\n— rekor.sigstore.dev wNI9ajBFAiEA2XeywzdrdqhzLquvlmRnhUilXehBLrzF8fUC1qAW+7oCIBa08gJYqJm+OKRiaYk3tUEyZJRth9sCD6/rKN7W+oUR\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIwYWVmZjhiMWVhOGZjNjFjNWQ0MzA5OWQzNDdlMGY2NWZkMTA5MjIxOWI0OGM4MWYxOWFkNzY5Y2IyZTQyODFjIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJR2pvNm9iYndtVkRhQ3VsZjdzVThUTWVBS1RNM0Q4MHZoNFNkMWdqY2xNY0FpQStLWlZjVzZCaHhwbExpdUhvZnNOZUhVUlc3VEZxVGs2Z2hVTFZLRFMwS3c9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFVWRU5EUW5STFowRjNTVUpCWjBsVlV5dFdUemxoUldSc2FsSTJjWEJ6VVcwMWNHTlJOU3RwVkhoRmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDU2UVRSTlZFRjZUbnBSTUZkb1kwNU5hbGwzVG5wQk5FMVVRVEJPZWxFd1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZhWkhsdGFEQk1VMU5vZUVwNlQxSk9SMWR3UzFGbWRrSjRWVk5oUmtWeVYyRlFjWGdLUVdsRmFqVnBlbGhFZDJScWVYcHRkM1ZEVVU1eGQzZFpiR2R0VEZORU4xTnhOMGw1VUM5a1MwVnZNRzQ1WldGM1R6WlBRMEptUlhkbloxaDBUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlUyYmpCWkNrMTFTRlZxU3pVMk9UWlZVVmxRZUdscU5qWnhXRGhKZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOVBSMFV6VFhwQ2EwOVVXbXBOZW1NeFRtcENhbGt5V1hoYVJFNXNDazFFYkcxT01rcHBXVEpPYTFsNlp6Uk9hbWQ0VDBkWmVrMTZRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDlIUlROTmVrSnJUMVJhYWsxNll6Rk9ha0pxV1RKWmVGcEVUbXhOUkd4dFRqSkthVmt5VG1zS1dYcG5ORTVxWjNoUFIxbDZUWHBCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDlIUlROTmVrSnJUMVJhYWsxNll6Rk9ha0pxV1RKWmVGcEVUbXdLVFVSc2JVNHlTbWxaTWs1cldYcG5ORTVxWjNoUFIxbDZUWHBCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUm9hRTU2VFhjS1drUnJNbGw2VFROT1ZGbDNXVEpPYlUxWFVYcGFWRUUxV21wa2FWbHRUbXBhUjAwMFQwUlpORTFVYUcxTmVrMTNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOYW1jMVRYcEZlVTFFVFRSTmFtTjJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwZDFsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTT1VKSWMwRUtaVkZDTTBGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtNHdSazlHVTFWQlFVRlJSQXBCUldkM1VtZEphRUZQYlRsRVNGSlBhemgyTDNnNGF6RnNWRTF3VVZWeWJtMTZiWEJ1UVdFdk1IWlJhRFJQTVRaSU1HcHlRV2xGUVdvMldtTjZZVVJTQ2l0elozbE5PRWhhUjBGcVJsUmhOV00wYUhRNFdUUk9hMGg0VG1OclZIVk9NSGhCZDBObldVbExiMXBKZW1vd1JVRjNUVVJoVVVGM1dtZEplRUZQZUhNS01qUXpVR0l4Ym1kblRHUmpORzloVTFCdGVGQk5ZMGdyUlZFeVdISmhZa2QyTldkTVozbG5VbFJ3VWtSb1RYaGpXVEJFUTNWbmRHbE1hR1JpTUVGSmVBcEJUV051YUZSMVZHZFBhR2d5Y1hWWlZHOXBhbmhVZDFCNFpVMWFaVzV4ZG10eWNtTjBRazlqVG1ac1VHbFdRbXhDU1dWTGN6UnplRXhtVTNFemRXWkRDbXhSUFQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgwNpwx+Qhshakpuq4X2p4XOWb6RAJvvBmd8CPcp5cWCcCFG4XR5sPXBVphp0RrPcOS37teFmSGA8yMDI2MDcwODEwMzc0NFowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwNzA4MTAzNzQ0WjAvBgkqhkiG9w0BCQQxIgQgxKmX+Z8OpSXYcssEAVwTCTc1PtiVym9OSpEsViz+LaswgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIwO/6H8ixGfG0rPkPnq/nKQ1q6cc+KffzvzahB0yDIePbOvV4X+5t1j4O3aEj3RUrOAjEAiPn4iTN/xTvvX+t09LhrBWIeOmtK6d9G8d9TmGAMfS0ZU2v+2cc4omyz9vhYp69M"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"Cu/4seqPxhxdQwmdNH4PZf0QkiGbSMgfGa12nLLkKBw="},"signature":"MEQCIGjo6obbwmVDaCulf7sU8TMeAKTM3D80vh4Sd1gjclMcAiA+KZVcW6BhxplLiuHofsNeHURW7TFqTk6ghULVKDS0Kw=="}}
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHSjCCBtCgAwIBAgIUdx/lIEg+xMOgaFXnM6PdWCYi/YowCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwODI3MDY1MDQ2WhcNMjYwODI3MDcwMDQ2WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+7iszCYvxvb9k5fYKMWNeDU9bYrvjx7OFoN7rOv3OnAzN5Wj5Te4pFUnmxvpVzA5uGFxCwaylkx+w1CggTw9P6OCBe8wggXrMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUlevAIseI8cwcSKfygFULOOuhAKMwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKGFkZGY0NzQxZmFmYjU1YjRjMTAxYjE1OTg1ZGZhZWVhN2M3YzJmM2EwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMzMwNDUzODQwMTMvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoEH8Qd8AAAQDAEYwRAIgH+GtdcPFPGWo29P7uJAanABp9lXt0EkUkBPaqiTmnswCIC2GE5do5N5QNUucJ6A8A1LdR2t+62PZloDsi+p9NyJQMAoGCCqGSM49BAMDA2gAMGUCMEcI4Iil0u+QQjICroVK7kzg6GTj/U3Ma66QKBTyS1yDYdGBTwcaIAtciYZFKrTzwgIxAM6A4r7lEWrKWoHvcp1g7nQs70SAFWm2DoX16WK09r7A1dYxrRhfIaslsina+GbSQg=="}, "tlogEntries":[{"logIndex":"2613808098", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1787813446", "inclusionPromise":{"signedEntryTimestamp":"MEQCIDcQoUCtsyCFwHx8hB5z9qfBqDho4uBQTqDqvwr0jUpSAiAQ91KHd6BW8cT/r1eLy5UNgBPpvX8O7y+pxCiAFIE2tA=="}, "inclusionProof":{"logIndex":"2491903836", "rootHash":"9fy4zi0iGqGt5xwl4oa9y6G2Mv4soCX9/S653HVCmmY=", "treeSize":"2491903867", "hashes":["Edg+yHec9A6fbBYE7dGX789APO3NjhPLaaIhA8UTY8U=", "ZCQJ1Hav/bAZE93ctAznX8oL3nYOsm4GDPTtki0g+7s=", "D3F7FmBemg0pnh0T81dofdD6GaXHROkS3v20qy66ms8=", "shNzfz4AdU3pIZc7+Jrdsy/bHKLD5kzqq7Db87+p0zo=", "1gwM8JDw6lrJvtZooOVHh6z0hHJh/pRIyaeIxXGza1w=", "6wJluHh7RDuEzZkfjisLuyeaxdI+1BxlkBxkKENYlHQ=", "a1iRum9U+B/Y/1aL9UNJYC7tuY0V+yLRZgZ6sYKwZ/c=", "UB+BA0wp7h99c5egtJTrxT9xh3eLNsL030N2tdnIQT0=", "IsilcDd06CLiuWMt4SugF4buyl2Ilkp/idmDv+g9b6c=", "+ZQuv3HoztHuVw6w+Vx664wPmWOB2e4ENHNNC0wEkSs=", "pVbpvJox+ivHtciMx4yNfvu2rLQjhrVADeeESXutjGM=", "AQSNk7LiajM2R60yCNOFer58otd41w8EZeNGjIlrmKY=", "2iu6MtbtwIBPWceOVpEntK/ScYeDCwQqeef9T+ZN1rg=", "PxB3thBKvs/N/+byXE6INhKRq76cWuFxeRGfVH2nJIo=", "vdSNqW8JzoTD5q4Kg73sWD1h0oayYiUaSbfeC6nVz18=", "E7AEzQrWJL3fkxC6doP8J8+b69/ILUYXJjzAAPrp8Oo=", "7TfDCaMWgEwSJEZd/e33b24919rF4IDJLmbqNNRNhZs=", "0HfdxDt/zGugZLIuHasrdLEW9s8OaTykSSqBEDFQXdw=", "SndbMKVtcTenAkwi2JBfGzD+mhexp1qJbRIY+A1JRIU=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2491903867\n9fy4zi0iGqGt5xwl4oa9y6G2Mv4soCX9/S653HVCmmY=\n\n— rekor.sigstore.dev wNI9ajBGAiEA2CPRaDmIoHfih6Q7+AgCN3Bd1rBeCNQgIhh5Mf+JhKACIQDk/TUd/ZbLmK08fQjAlbwtG6bhQr6vs3iIE3pASEuiBw==\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJiYTM0MzQwYTI5NTU4M2QzYTI3NjQ3OTcxNmNhYWY4ZGI5ZWFjOWQyODAzM2I1OTdmYWIwNzJkMzA2MDg0YzNlIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUQ5SStnYjBwNU9NR0VtRVRXZW5UTU4rcDA3cE1wQjZiRmhaS3RPZUhWaDhnSWdOdFJ6a3NzbUg1UzZpQkNnVU9HMmp0Y0JNQTM4Nk1zTmUxVFVCTWIwbEVRPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRha05EUW5SRFowRjNTVUpCWjBsVlpIZ3ZiRWxGWnl0NFRVOW5ZVVpZYmswMlVHUlhRMWxwTDFsdmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlFU1ROTlJGa3hUVVJSTWxkb1kwNU5hbGwzVDBSSk0wMUVZM2ROUkZFeVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVVyTjJsemVrTlpkbmgyWWpsck5XWlpTMDFYVG1WRVZUbGlXWEoyYW5nM1QwWnZUamNLY2s5Mk0wOXVRWHBPTlZkcU5WUmxOSEJHVlc1dGVIWndWbnBCTlhWSFJuaERkMkY1Ykd0NEszY3hRMmRuVkhjNVVEWlBRMEpsT0hkbloxaHlUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZzWlhaQkNrbHpaVWs0WTNkalUwdG1lV2RHVlV4UFQzVm9RVXROZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOVpWMUpyV21wUk0wNUVSbTFaVjFwcFRsUldhVTVIVFhoTlJFWnBDazFVVlRWUFJGWnJXbTFHYkZwWFJUTlplbVJxVFcxWmVsbFVRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMWxYVW10YWFsRXpUa1JHYlZsWFdtbE9WRlpwVGtkTmVFMUVSbWxOVkZVMVQwUldhMXB0Um13S1dsZEZNMWw2WkdwTmJWbDZXVlJCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMWxYVW10YWFsRXpUa1JHYlZsWFdtbE9WRlpwVGtkTmVFMUVSbWtLVFZSVk5VOUVWbXRhYlVac1dsZEZNMWw2WkdwTmJWbDZXVlJCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwZEdhMXBIV1RBS1RucFJlRnB0Um0xWmFsVXhXV3BTYWsxVVFYaFpha1V4VDFSbk1WcEhXbWhhVjFab1RqSk5NMWw2U20xTk1rVjNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOZWsxM1RrUlZlazlFVVhkTlZFMTJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwVVZsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTTjBKSWEwRUtaSGRDTVVGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtOUZTRGhSWkRoQlFVRlJSQXBCUlZsM1VrRkpaMGdyUjNSa1kxQkdVRWRYYnpJNVVEZDFTa0ZoYmtGQ2NEbHNXSFF3Uld0VmEwSlFZWEZwVkcxdWMzZERTVU15UjBVMVpHODFUalZSQ2s1VmRXTktOa0U0UVRGTVpGSXlkQ3MyTWxCYWJHOUVjMmtyY0RsT2VVcFJUVUZ2UjBORGNVZFRUVFE1UWtGTlJFRXlaMEZOUjFWRFRVVmpTVFJKYVd3S01IVXJVVkZxU1VOeWIxWkxOMnQ2WnpaSFZHb3ZWVE5OWVRZMlVVdENWSGxUTVhsRVdXUkhRbFIzWTJGSlFYUmphVmxhUmt0eVZIcDNaMGw0UVUwMlFRbzBjamRzUlZkeVMxZHZTSFpqY0RGbk4yNVJjemN3VTBGR1YyMHlSRzlZTVRaWFN6QTVjamRCTVdSWmVISlNhR1pKWVhOc2MybHVZU3RIWWxOUlp6MDlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg5+CKP5J19psGD8ho0Rn7BPhhhsfS10P5yJb4Qa3SCHYCFGZai847N/4dNbO7JtbH+GG36k4TGA8yMDI2MDgyNzA2NTA0NlowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwODI3MDY1MDQ2WjAvBgkqhkiG9w0BCQQxIgQg6TesB/Bzm4TbIsbaamtHAKC+ZM9V6fpKM9c+syel9IUwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIxAP7KOTXniplQ+eG+jBdilaGSJfaCoHVyr4AnVohw9DIsV47sMeLwEHQYj7jsyytTSwIwal7gB+3QwvZo/gmEg6y2LMrLrOCF/sgtWcwKQTeSyKFsuUXeOJceiTgxoqQcm982"}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"ujQ0CilVg9OidkeXFsqvjbnqydKAM7WX+rBy0wYITD4="}, "signature":"MEUCIQD9I+gb0p5OMGEmETWenTMN+p07pMpB6bFhZKtOeHVh8gIgNtRzkssmH5S6iBCgUOG2jtcBMA386MsNe1TUBMb0lEQ="}}
|
build/torch213-cxx11-cu132-x86_64-linux/{_flash_mla_cuda_8a730d9.abi3.so → _flash_mla_cuda_addf474.abi3.so}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
size 7420440
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5131932ebcb82ee059f35ad42f26a60050883efcce0fac85ef601787ea5ecf6a
|
| 3 |
size 7420440
|
build/torch213-cxx11-cu132-x86_64-linux/_ops.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
| 1 |
import torch
|
| 2 |
-
from . import
|
| 3 |
-
ops = torch.ops.
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
-
return f"
|
|
|
|
| 1 |
import torch
|
| 2 |
+
from . import _flash_mla_cuda_addf474
|
| 3 |
+
ops = torch.ops._flash_mla_cuda_addf474
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
+
return f"_flash_mla_cuda_addf474::{op_name}"
|
build/torch213-cxx11-cu132-x86_64-linux/flash_mla/__init__.py
DELETED
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
import ctypes
|
| 2 |
-
import importlib.util
|
| 3 |
-
import sys
|
| 4 |
-
from pathlib import Path
|
| 5 |
-
from types import ModuleType
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
def _import_from_path(file_path: Path) -> ModuleType:
|
| 9 |
-
# We cannot use the module name as-is, after adding it to `sys.modules`,
|
| 10 |
-
# it would also be used for other imports. So, we make a module name that
|
| 11 |
-
# depends on the path for it to be unique using the hex-encoded hash of
|
| 12 |
-
# the path.
|
| 13 |
-
path_hash = "{:x}".format(ctypes.c_size_t(hash(file_path.absolute())).value)
|
| 14 |
-
module_name = path_hash
|
| 15 |
-
spec = importlib.util.spec_from_file_location(module_name, file_path)
|
| 16 |
-
if spec is None:
|
| 17 |
-
raise ImportError(f"Cannot load spec for {module_name} from {file_path}")
|
| 18 |
-
module = importlib.util.module_from_spec(spec)
|
| 19 |
-
if module is None:
|
| 20 |
-
raise ImportError(f"Cannot load module {module_name} from spec")
|
| 21 |
-
sys.modules[module_name] = module
|
| 22 |
-
spec.loader.exec_module(module) # type: ignore
|
| 23 |
-
return module
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
globals().update(vars(_import_from_path(Path(__file__).parent.parent / "__init__.py")))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
build/torch213-cxx11-cu132-x86_64-linux/metadata.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
| 1 |
{
|
| 2 |
"name": "flash-mla",
|
| 3 |
-
"id": "
|
| 4 |
"version": 1,
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
|
|
|
| 7 |
"backend": {
|
| 8 |
"type": "cuda",
|
| 9 |
"archs": [
|
|
@@ -15,20 +16,19 @@
|
|
| 15 |
"algorithm": "sha256",
|
| 16 |
"files": {
|
| 17 |
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 18 |
-
"
|
| 19 |
-
"_ops.py": "
|
| 20 |
-
"flash_mla/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 21 |
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
}
|
| 23 |
},
|
| 24 |
"provenance": {
|
| 25 |
"kernel-builder": {
|
| 26 |
"version": "0.17.0-dev0",
|
| 27 |
-
"
|
| 28 |
"dirty": false
|
| 29 |
},
|
| 30 |
"kernel": {
|
| 31 |
-
"
|
| 32 |
"dirty": false
|
| 33 |
}
|
| 34 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"name": "flash-mla",
|
| 3 |
+
"id": "_flash_mla_cuda_addf474",
|
| 4 |
"version": 1,
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
| 7 |
+
"kernel-depends": [],
|
| 8 |
"backend": {
|
| 9 |
"type": "cuda",
|
| 10 |
"archs": [
|
|
|
|
| 16 |
"algorithm": "sha256",
|
| 17 |
"files": {
|
| 18 |
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 19 |
+
"_flash_mla_cuda_addf474.abi3.so": "UTGTLry4LuBZ81rULyamAFCIPvzOD6yF72AXh+pez2o=",
|
| 20 |
+
"_ops.py": "127vMzGPzwgnEABQxo12emwqoX29KOApmtNgy+n0QPs=",
|
|
|
|
| 21 |
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
}
|
| 23 |
},
|
| 24 |
"provenance": {
|
| 25 |
"kernel-builder": {
|
| 26 |
"version": "0.17.0-dev0",
|
| 27 |
+
"commit": "081dcd473f8eca27226eef1f9c47c45b86c756b5",
|
| 28 |
"dirty": false
|
| 29 |
},
|
| 30 |
"kernel": {
|
| 31 |
+
"commit": "addf4741fafb55b4c101b15985dfaeea7c7c2f3a",
|
| 32 |
"dirty": false
|
| 33 |
}
|
| 34 |
}
|
build/torch213-cxx11-cu132-x86_64-linux/metadata.json.sigstore
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHSzCCBtCgAwIBAgIUR4+cUPbPnylvaALNDFuenQQ621MwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNzA4MTAzNzQ2WhcNMjYwNzA4MTA0NzQ2WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEb8+K8u0BVOMTFXPccRI4GZaNbw+5KLNZ6MJob6/uvDUxq90cFIE1GiPZiVFYn/1+jSaEodzSlYzRiH487tHVHqOCBe8wggXrMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUHLkV4fY7jua6wfF1F511EzCfVcQwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoOGE3MzBkOTZjMzc1NjBjY2YxZDNlMDlmN2JiY2NkYzg4NjgxOGYzMzATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoOGE3MzBkOTZjMzc1NjBjY2YxZDNlMDlmN2JiY2NkYzg4NjgxOGYzMzAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoOGE3MzBkOTZjMzc1NjBjY2YxZDNlMDlmN2JiY2NkYzg4NjgxOGYzMzAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDhhNzMwZDk2YzM3NTYwY2NmMWQzZTA5ZjdiYmNjZGM4ODY4MThmMzMwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMjg5MzEyMDM4MjcvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABn0FOHOEAAAQDAEYwRAIgJejcbD5AVelxf4ut6IIfWGcI9t1wIa1coRMaUsE0ossCIDoVH9HuaV2gxsWDt6K0O9lMOdt3l7MJNbn9eOFbiN0fMAoGCCqGSM49BAMDA2kAMGYCMQC0CtSBQR0vEsxfmbBRBeGeUsAdz6tRvr15uq8o74s5XdjXyQ0V/lHGUGIn3Nldas4CMQCEV/L4w6cIBN3goxxdlliyDbx3uGb+PMqYmlBRBDBIV6jv4/FcsBDG8D8aV1C6C34="},"tlogEntries":[{"logIndex":"2114576137","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1783507066","inclusionPromise":{"signedEntryTimestamp":"MEQCIAGKeiJHeQa+ucChcC3UeLnKYudKKZOhcCYC666vs/xDAiBUmkKyLp33YrFSYjUl4BzXhiJ6ArXE64TOqH9GIiGbYg=="},"inclusionProof":{"logIndex":"1992671875","rootHash":"HxZZqtS9iSpqR41kvI96t2D5QB4uqekbubbHc//VUpg=","treeSize":"1992672010","hashes":["F/yxuyEQLFBaYm0HIVn74Sjm8u4OOc7g7FDzu9++af0=","7I1XPbnERHsXTWEBorVjUP+/ak4GrdhXQ9DKvT5VFDk=","xNY6EENcZ2rR9Y5KfK3YxXhCHTRewyrCoZjIgY6A+yM=","zrPAoClrQvTGowVPOOZqHTaSGiYR3YN4eTU0/4C7AHc=","MQ6DN+MXgRWq/UD47Sw/Mw2jiSsZrXsJAoRXQhMcNvM=","4NqtPOerMIeHNVAFHtyW838/LYi3btiYLPm9GnrmsuQ=","CEMBrF6xyoY2EGAxc0/8Zmp7GixQm8rMZd6Fy6m9ijA=","R8j3a08BFXB9Y3c0fze7D75AV6HqEvglNYwj4hX0iJ8=","gL/Whag/5ZRF1qdZnxyC9bxmbLPvQpdHS02BhJCQ7U0=","7yzoaGqHJUkKVvtK3MCYH1L9EPVcLGx0m1hmIX3N5nA=","kDewvzZL3/eXTs0JmwpCWlo3tnsjwa4EZJgqrCSM1bI=","OJy7NMtVJ/9Px/edi0+OYsvFcjNSaRbLGBs3V6PzQgw=","xRWlV3AK+dyzsYcMGS68cyFtF0eVnth3UveHOLqnJPQ=","ygozRdjhEq8EKpY3r/eSJ/LoGZpxIa5exdqUlj6ZuRo=","frI9BMUdqa/KPLUCZ9yfDzZ2Z6tglf7SvThMJqEFBKU=","Bcvbbu+tDL+zr1H2q26c2ATmVu7v/f7JIFweUu7qDK8=","WajL3ZhY6ZX9meV3VTH9TkrbM31OF4o6+7foL0Uf6PI=","cyKMKBvHkQtwb2xR5svh+YppANOVdn7X8t4DuKMxICA=","+/VZ56MsIPxMiyLAodzKXo5TEWdQp36z89qLhpzloAo=","daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=","DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n1992672010\nHxZZqtS9iSpqR41kvI96t2D5QB4uqekbubbHc//VUpg=\n\n— rekor.sigstore.dev wNI9ajBFAiBEbW5ccVvvD/Hs5QCOOFELaNnIzjNKJp5A9fyjMs+KDAIhAK/FudIIqUKiiapgx8sL3bFhI7lnfx2QMI9E4P4WgYp+\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIxZjIxYzQ2ZDM4ZmRiNDI3Mzg0OWI1MTJkOWI3NzJiZjliZDY3NmExMjExNzdjNjYwZDk4YWFjYzY5ZWViY2Y2In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJQnBKUWVKTmh5c0xEemFwWktCbE0rci85eG5NQ1NSQ0N0czNrbjV3Rlk1RkFpQi8zUGNpdHhIaXh5cVJQTXJnWFFRWjYxcTZNcUs4TTRhODl2S3RsUTdoQnc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRla05EUW5SRFowRjNTVUpCWjBsVlVqUXJZMVZRWWxCdWVXeDJZVUZNVGtSR2RXVnVVVkUyTWpGTmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDU2UVRSTlZFRjZUbnBSTWxkb1kwNU5hbGwzVG5wQk5FMVVRVEJPZWxFeVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZpT0N0TE9IVXdRbFpQVFZSR1dGQmpZMUpKTkVkYVlVNWlkeXMxUzB4T1dqWk5TbThLWWpZdmRYWkVWWGh4T1RCalJrbEZNVWRwVUZwcFZrWlpiaTh4SzJwVFlVVnZaSHBUYkZsNlVtbElORGczZEVoV1NIRlBRMEpsT0hkbloxaHlUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZJVEd0V0NqUm1XVGRxZFdFMmQyWkdNVVkxTVRGRmVrTm1WbU5SZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOVBSMFV6VFhwQ2EwOVVXbXBOZW1NeFRtcENhbGt5V1hoYVJFNXNDazFFYkcxT01rcHBXVEpPYTFsNlp6Uk9hbWQ0VDBkWmVrMTZRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDlIUlROTmVrSnJUMVJhYWsxNll6Rk9ha0pxV1RKWmVGcEVUbXhOUkd4dFRqSkthVmt5VG1zS1dYcG5ORTVxWjNoUFIxbDZUWHBCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDlIUlROTmVrSnJUMVJhYWsxNll6Rk9ha0pxV1RKWmVGcEVUbXdLVFVSc2JVNHlTbWxaTWs1cldYcG5ORTVxWjNoUFIxbDZUWHBCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUm9hRTU2VFhjS1drUnJNbGw2VFROT1ZGbDNXVEpPYlUxWFVYcGFWRUUxV21wa2FWbHRUbXBhUjAwMFQwUlpORTFVYUcxTmVrMTNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOYW1jMVRYcEZlVTFFVFRSTmFtTjJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwVVZsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTTjBKSWEwRUtaSGRDTVVGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtNHdSazlJVDBWQlFVRlJSQXBCUlZsM1VrRkpaMHBsYW1OaVJEVkJWbVZzZUdZMGRYUTJTVWxtVjBkalNUbDBNWGRKWVRGamIxSk5ZVlZ6UlRCdmMzTkRTVVJ2VmtnNVNIVmhWakpuQ25oelYwUjBOa3N3VHpsc1RVOWtkRE5zTjAxS1RtSnVPV1ZQUm1KcFRqQm1UVUZ2UjBORGNVZFRUVFE1UWtGTlJFRXlhMEZOUjFsRFRWRkRNRU4wVTBJS1VWSXdka1Z6ZUdadFlrSlNRbVZIWlZWelFXUjZOblJTZG5JeE5YVnhPRzgzTkhNMVdHUnFXSGxSTUZZdmJFaEhWVWRKYmpOT2JHUmhjelJEVFZGRFJRcFdMMHcwZHpaalNVSk9NMmR2ZUhoa2JHeHBlVVJpZUROMVIySXJVRTF4V1cxc1FsSkNSRUpKVmpacWRqUXZSbU56UWtSSE9FUTRZVll4UXpaRE16UTlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyzADAgEAMIICwgYJKoZIhvcNAQcCoIICszCCAq8CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgDm1OPuIjq0lW/ifju1WEH9DmxCjqCe9CxxOxvDYtHOUCFQD7iHd3POw3D5F0QrlCNcsZwQSBPRgPMjAyNjA3MDgxMDM3NDZaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHcMIIB2AIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDcwODEwMzc0NlowLwYJKoZIhvcNAQkEMSIEIJpv39Lui3tgSY0l0zU0enPueCGwhpyxiTBuvCCskIBcMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRoMGYCMQCtxoONm2V0DIYzXxXzuve0qjpYP7ukstQY/7VbzI/tIi7+HBq+62Yyf1lVdhbipzUCMQCqdNNAsVX1DUFuXc4BVhXcbdQfyArYhbscnMrt+6iDD08iVi2Vo8NlD85g5GKxXuU="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"HyHEbTj9tCc4SbUS2bdyv5vWdqEhF3xmDZiqzGnuvPY="},"signature":"MEQCIBpJQeJNhysLDzapZKBlM+r/9xnMCSRCCts3kn5wFY5FAiB/3PcitxHixyqRPMrgXQQZ61q6MqK8M4a89vKtlQ7hBw=="}}
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHSzCCBtGgAwIBAgIUcvtSPdLs/OkK9/vCXxuiIJF5q7swCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwODI3MDY1MDQ3WhcNMjYwODI3MDcwMDQ3WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnDg3kBge5dCSOBA7uTqNMfefoPRGhsTojoGA/UusPZnrvoSocMGxQarAbekgi3/p08MTpMrxDJ/eIrY0fCniQqOCBfAwggXsMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUS4weKKUw9SJeEU72FG+YR9yvUfYwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKGFkZGY0NzQxZmFmYjU1YjRjMTAxYjE1OTg1ZGZhZWVhN2M3YzJmM2EwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMzMwNDUzODQwMTMvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoEH8RfcAAAQDAEcwRQIhANrQaRBxGgRrX5WqtWeV4vulcj+IN1gfibS+XLnuuylWAiAN3b6F+DyeG8qR7ldFbeGUslGVnul2wWFbOor/6xgMNTAKBggqhkjOPQQDAwNoADBlAjBMoBlvq5dKyu6O8mkX+/jYQa1APjHcl7VhPfoGS6MKIdfeTzK08uczP0pN+e6A/BUCMQDxTINNSy0YdfsWFzzSyhiL57qPnGy1TQBlpoaamg0ag4VwhKw0S4xuihjTllcjd7Q="}, "tlogEntries":[{"logIndex":"2613808358", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1787813447", "inclusionPromise":{"signedEntryTimestamp":"MEYCIQDzAW0VSd7YXiKJXQjDUcMcj1+79yRBFv7EBQBNt/Hv4AIhAOqbv2qSkcoLM4z9+hUVwX9mk7Gj75ozvwMfOCh8yGew"}, "inclusionProof":{"logIndex":"2491904096", "rootHash":"rLrEczzNju+GkmHtBV9f/bwF7dreDQZq0ApZNPlNtKE=", "treeSize":"2491904103", "hashes":["bJURHhJqcV2ZdezZuiW0lWUNEMN3itXy80J5JTf5OGs=", "75ZHVlCcFHBzApllWKoVd4hdb0EGMy2wBDp83iInTk0=", "H8a1TcLcoS/0FzUlS9HE/np9ih+bLGAG9TzpR9K8N0g=", "tnuyUiS2qdZ2D/mY6V81xlZN47pvSUSJgWs7dfs8XhA=", "g7rDjtSODlfX9Ztl3zdWF0Ar9e7h/wZMsnbz2Nxt/Os=", "riGebUJvFYEgCFSvpgso18qqbOHt0UvnZbNnYRA1xgc=", "AQSNk7LiajM2R60yCNOFer58otd41w8EZeNGjIlrmKY=", "2iu6MtbtwIBPWceOVpEntK/ScYeDCwQqeef9T+ZN1rg=", "PxB3thBKvs/N/+byXE6INhKRq76cWuFxeRGfVH2nJIo=", "vdSNqW8JzoTD5q4Kg73sWD1h0oayYiUaSbfeC6nVz18=", "E7AEzQrWJL3fkxC6doP8J8+b69/ILUYXJjzAAPrp8Oo=", "7TfDCaMWgEwSJEZd/e33b24919rF4IDJLmbqNNRNhZs=", "0HfdxDt/zGugZLIuHasrdLEW9s8OaTykSSqBEDFQXdw=", "SndbMKVtcTenAkwi2JBfGzD+mhexp1qJbRIY+A1JRIU=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2491904103\nrLrEczzNju+GkmHtBV9f/bwF7dreDQZq0ApZNPlNtKE=\n\n— rekor.sigstore.dev wNI9ajBEAiBKrbT5RTkob46QkIdDuaXEH0xWDSN+ZwDEadyXu5sSfAIgZiUiN/+Z23wRXF1XDnoIppVjXhkWmnGgu3aGMKw+V8E=\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJmOTdmYmVkYmU3Y2U0Y2QxM2ZjMjBkNjY1YTE2N2Y5YmM4ZWM2MGZiMzU3YTkzY2FjNjA4YTgwYzI3NWIyZWNkIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUUM5VEpzVHdVc3FsVzZGaDlieHdUd0xCRWRqcWNXQjFsdTdIdVZ3SGZyMDl3SWhBSXRzRWtPZ3lWSDJUOUpnMURjYWRUemE4cHhlUEtreFdLRVBMNlpjUFlMdyIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRla05EUW5SSFowRjNTVUpCWjBsVlkzWjBVMUJrVEhNdlQydExPUzkyUTFoNGRXbEpTa1kxY1RkemQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlFU1ROTlJGa3hUVVJSTTFkb1kwNU5hbGwzVDBSSk0wMUVZM2ROUkZFelYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZ1UkdjemEwSm5aVFZrUTFOUFFrRTNkVlJ4VGsxbVpXWnZVRkpIYUhOVWIycHZSMEVLTDFWMWMxQmFibkoyYjFOdlkwMUhlRkZoY2tGaVpXdG5hVE12Y0RBNFRWUndUWEo0UkVvdlpVbHlXVEJtUTI1cFVYRlBRMEptUVhkbloxaHpUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZUTkhkbENrdExWWGM1VTBwbFJWVTNNa1pISzFsU09YbDJWV1paZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOVpWMUpyV21wUk0wNUVSbTFaVjFwcFRsUldhVTVIVFhoTlJFWnBDazFVVlRWUFJGWnJXbTFHYkZwWFJUTlplbVJxVFcxWmVsbFVRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMWxYVW10YWFsRXpUa1JHYlZsWFdtbE9WRlpwVGtkTmVFMUVSbWxOVkZVMVQwUldhMXB0Um13S1dsZEZNMWw2WkdwTmJWbDZXVlJCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMWxYVW10YWFsRXpUa1JHYlZsWFdtbE9WRlpwVGtkTmVFMUVSbWtLVFZSVk5VOUVWbXRhYlVac1dsZEZNMWw2WkdwTmJWbDZXVlJCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwZEdhMXBIV1RBS1RucFJlRnB0Um0xWmFsVXhXV3BTYWsxVVFYaFpha1V4VDFSbk1WcEhXbWhhVjFab1RqSk5NMWw2U20xTk1rVjNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOZWsxM1RrUlZlazlFVVhkTlZFMTJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwWjFsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTT0VKSWIwRUtaVUZDTWtGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtOUZTRGhTWm1OQlFVRlJSQXBCUldOM1VsRkphRUZPY2xGaFVrSjRSMmRTY2xnMVYzRjBWMlZXTkhaMWJHTnFLMGxPTVdkbWFXSlRLMWhNYm5WMWVXeFhRV2xCVGpOaU5rWXJSSGxsQ2tjNGNWSTNiR1JHWW1WSFZYTnNSMVp1ZFd3eWQxZEdZazl2Y2k4MmVHZE5UbFJCUzBKblozRm9hMnBQVUZGUlJFRjNUbTlCUkVKc1FXcENUVzlDYkhZS2NUVmtTM2wxTms4NGJXdFlLeTlxV1ZGaE1VRlFha2hqYkRkV2FGQm1iMGRUTmsxTFNXUm1aVlI2U3pBNGRXTjZVREJ3VGl0bE5rRXZRbFZEVFZGRWVBcFVTVTVPVTNrd1dXUm1jMWRHZW5wVGVXaHBURFUzY1ZCdVIza3hWRkZDYkhCdllXRnRaekJoWnpSV2QyaExkekJUTkhoMWFXaHFWR3hzWTJwa04xRTlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg7ySt73UmGCO2J/KJ3c/6cTMmIhdwm7wWQB5/3w86Jp0CFC1Q1hsHeWhiDUocUO5dB4qgWstUGA8yMDI2MDgyNzA2NTA0N1owAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdwwggHYAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwODI3MDY1MDQ3WjAvBgkqhkiG9w0BCQQxIgQgNhYyg/K3FTOo9g32o5nbL3D7PIG71IpIhdQb9KtQrjgwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGgwZgIxAKoQQ01mpvoaSAVvpcC5FSikDG+AaSd4AEpSbZ6ub7fTh0Ibc2a9BoLFLbaapWpCRAIxALLCGtafNtJEUYciZrYp6brvFDjT3KzTG1HFQF89kZTagS6U6VMhpaVBHx8Yh2WVZw=="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"+X++2+fOTNE/wg1mWhZ/m8jsYPs1epPKxgioDCdbLs0="}, "signature":"MEYCIQC9TJsTwUsqlW6Fh9bxwTwLBEdjqcWB1lu7HuVwHfr09wIhAItsEkOgyVH2T9Jg1DcadTza8pxePKkxWKEPL6ZcPYLw"}}
|
build/torch214-cxx11-cu130-x86_64-linux/__init__.py
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import Optional, Tuple
|
| 2 |
+
import torch
|
| 3 |
+
|
| 4 |
+
from .flash_mla_interface import FlashMLASchedMeta
|
| 5 |
+
from . import flash_mla_interface as _impl
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
def get_mla_metadata(*args, **kwargs) -> Tuple[FlashMLASchedMeta, None]:
|
| 9 |
+
return _impl.get_mla_metadata(*args, **kwargs)
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
def flash_mla_with_kvcache(
|
| 13 |
+
q: torch.Tensor,
|
| 14 |
+
k_cache: torch.Tensor,
|
| 15 |
+
block_table: Optional[torch.Tensor],
|
| 16 |
+
cache_seqlens: Optional[torch.Tensor],
|
| 17 |
+
head_dim_v: int,
|
| 18 |
+
tile_scheduler_metadata: FlashMLASchedMeta,
|
| 19 |
+
num_splits: None = None,
|
| 20 |
+
softmax_scale: Optional[float] = None,
|
| 21 |
+
causal: bool = False,
|
| 22 |
+
is_fp8_kvcache: bool = False,
|
| 23 |
+
indices: Optional[torch.Tensor] = None,
|
| 24 |
+
attn_sink: Optional[torch.Tensor] = None,
|
| 25 |
+
extra_k_cache: Optional[torch.Tensor] = None,
|
| 26 |
+
extra_indices_in_kvcache: Optional[torch.Tensor] = None,
|
| 27 |
+
topk_length: Optional[torch.Tensor] = None,
|
| 28 |
+
extra_topk_length: Optional[torch.Tensor] = None,
|
| 29 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 30 |
+
return _impl.flash_mla_with_kvcache(
|
| 31 |
+
q=q,
|
| 32 |
+
k_cache=k_cache,
|
| 33 |
+
block_table=block_table,
|
| 34 |
+
cache_seqlens=cache_seqlens,
|
| 35 |
+
head_dim_v=head_dim_v,
|
| 36 |
+
tile_scheduler_metadata=tile_scheduler_metadata,
|
| 37 |
+
num_splits=num_splits,
|
| 38 |
+
softmax_scale=softmax_scale,
|
| 39 |
+
causal=causal,
|
| 40 |
+
is_fp8_kvcache=is_fp8_kvcache,
|
| 41 |
+
indices=indices,
|
| 42 |
+
attn_sink=attn_sink,
|
| 43 |
+
extra_k_cache=extra_k_cache,
|
| 44 |
+
extra_indices_in_kvcache=extra_indices_in_kvcache,
|
| 45 |
+
topk_length=topk_length,
|
| 46 |
+
extra_topk_length=extra_topk_length,
|
| 47 |
+
)
|
| 48 |
+
|
| 49 |
+
|
| 50 |
+
def flash_mla_sparse_fwd(
|
| 51 |
+
q: torch.Tensor,
|
| 52 |
+
kv: torch.Tensor,
|
| 53 |
+
indices: torch.Tensor,
|
| 54 |
+
sm_scale: float,
|
| 55 |
+
d_v: int = 512,
|
| 56 |
+
attn_sink: Optional[torch.Tensor] = None,
|
| 57 |
+
topk_length: Optional[torch.Tensor] = None,
|
| 58 |
+
) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
|
| 59 |
+
return _impl.flash_mla_sparse_fwd(
|
| 60 |
+
q=q,
|
| 61 |
+
kv=kv,
|
| 62 |
+
indices=indices,
|
| 63 |
+
sm_scale=sm_scale,
|
| 64 |
+
d_v=d_v,
|
| 65 |
+
attn_sink=attn_sink,
|
| 66 |
+
topk_length=topk_length,
|
| 67 |
+
)
|
| 68 |
+
|
| 69 |
+
|
| 70 |
+
def flash_attn_varlen_func(
|
| 71 |
+
q: torch.Tensor,
|
| 72 |
+
k: torch.Tensor,
|
| 73 |
+
v: torch.Tensor,
|
| 74 |
+
cu_seqlens_qo: torch.Tensor,
|
| 75 |
+
cu_seqlens_kv: torch.Tensor,
|
| 76 |
+
max_seqlen_qo: int,
|
| 77 |
+
max_seqlen_kv: int,
|
| 78 |
+
dropout_p: float = 0.0,
|
| 79 |
+
softmax_scale: Optional[float] = None,
|
| 80 |
+
causal: bool = False,
|
| 81 |
+
deterministic: bool = False,
|
| 82 |
+
is_varlen: bool = True,
|
| 83 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 84 |
+
return _impl.flash_attn_varlen_func(
|
| 85 |
+
q=q,
|
| 86 |
+
k=k,
|
| 87 |
+
v=v,
|
| 88 |
+
cu_seqlens_qo=cu_seqlens_qo,
|
| 89 |
+
cu_seqlens_kv=cu_seqlens_kv,
|
| 90 |
+
max_seqlen_qo=max_seqlen_qo,
|
| 91 |
+
max_seqlen_kv=max_seqlen_kv,
|
| 92 |
+
dropout_p=dropout_p,
|
| 93 |
+
softmax_scale=softmax_scale,
|
| 94 |
+
causal=causal,
|
| 95 |
+
deterministic=deterministic,
|
| 96 |
+
is_varlen=is_varlen,
|
| 97 |
+
)
|
| 98 |
+
|
| 99 |
+
|
| 100 |
+
def flash_attn_varlen_qkvpacked_func(
|
| 101 |
+
qkv: torch.Tensor,
|
| 102 |
+
cu_seqlens: torch.Tensor,
|
| 103 |
+
max_seqlen: int,
|
| 104 |
+
head_dim_qk: int,
|
| 105 |
+
dropout_p: float = 0.0,
|
| 106 |
+
softmax_scale: Optional[float] = None,
|
| 107 |
+
causal: bool = False,
|
| 108 |
+
deterministic: bool = False,
|
| 109 |
+
is_varlen: bool = True,
|
| 110 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 111 |
+
return _impl.flash_attn_varlen_qkvpacked_func(
|
| 112 |
+
qkv=qkv,
|
| 113 |
+
cu_seqlens=cu_seqlens,
|
| 114 |
+
max_seqlen=max_seqlen,
|
| 115 |
+
head_dim_qk=head_dim_qk,
|
| 116 |
+
dropout_p=dropout_p,
|
| 117 |
+
softmax_scale=softmax_scale,
|
| 118 |
+
causal=causal,
|
| 119 |
+
deterministic=deterministic,
|
| 120 |
+
is_varlen=is_varlen,
|
| 121 |
+
)
|
| 122 |
+
|
| 123 |
+
|
| 124 |
+
def flash_attn_varlen_kvpacked_func(
|
| 125 |
+
q: torch.Tensor,
|
| 126 |
+
kv: torch.Tensor,
|
| 127 |
+
cu_seqlens_qo: torch.Tensor,
|
| 128 |
+
cu_seqlens_kv: torch.Tensor,
|
| 129 |
+
max_seqlen_qo: int,
|
| 130 |
+
max_seqlen_kv: int,
|
| 131 |
+
head_dim_qk: int,
|
| 132 |
+
dropout_p: float = 0.0,
|
| 133 |
+
softmax_scale: Optional[float] = None,
|
| 134 |
+
causal: bool = False,
|
| 135 |
+
deterministic: bool = False,
|
| 136 |
+
is_varlen: bool = True,
|
| 137 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 138 |
+
return _impl.flash_attn_varlen_kvpacked_func(
|
| 139 |
+
q=q,
|
| 140 |
+
kv=kv,
|
| 141 |
+
cu_seqlens_qo=cu_seqlens_qo,
|
| 142 |
+
cu_seqlens_kv=cu_seqlens_kv,
|
| 143 |
+
max_seqlen_qo=max_seqlen_qo,
|
| 144 |
+
max_seqlen_kv=max_seqlen_kv,
|
| 145 |
+
head_dim_qk=head_dim_qk,
|
| 146 |
+
dropout_p=dropout_p,
|
| 147 |
+
softmax_scale=softmax_scale,
|
| 148 |
+
causal=causal,
|
| 149 |
+
deterministic=deterministic,
|
| 150 |
+
is_varlen=is_varlen,
|
| 151 |
+
)
|
| 152 |
+
|
| 153 |
+
|
| 154 |
+
__all__ = [
|
| 155 |
+
"__version__",
|
| 156 |
+
"FlashMLASchedMeta",
|
| 157 |
+
"get_mla_metadata",
|
| 158 |
+
"flash_mla_with_kvcache",
|
| 159 |
+
"flash_attn_varlen_func",
|
| 160 |
+
"flash_attn_varlen_qkvpacked_func",
|
| 161 |
+
"flash_attn_varlen_kvpacked_func",
|
| 162 |
+
"flash_mla_sparse_fwd",
|
| 163 |
+
]
|
build/torch214-cxx11-cu130-x86_64-linux/_flash_mla_cuda_addf474.abi3.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:81e00851aa62d167ab414c878fbee5aa46d5683b114437ead87d49c5a411f4d0
|
| 3 |
+
size 7482632
|
build/torch214-cxx11-cu130-x86_64-linux/_ops.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from . import _flash_mla_cuda_addf474
|
| 3 |
+
ops = torch.ops._flash_mla_cuda_addf474
|
| 4 |
+
|
| 5 |
+
def add_op_namespace_prefix(op_name: str):
|
| 6 |
+
"""
|
| 7 |
+
Prefix op by namespace.
|
| 8 |
+
"""
|
| 9 |
+
return f"_flash_mla_cuda_addf474::{op_name}"
|
build/torch214-cxx11-cu130-x86_64-linux/flash_mla_interface.py
ADDED
|
@@ -0,0 +1,435 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import Optional, Tuple
|
| 2 |
+
import dataclasses
|
| 3 |
+
|
| 4 |
+
import torch
|
| 5 |
+
|
| 6 |
+
from ._ops import ops as flash_mla_cuda
|
| 7 |
+
|
| 8 |
+
@dataclasses.dataclass
|
| 9 |
+
class FlashMLASchedMeta:
|
| 10 |
+
"""
|
| 11 |
+
A class that stores the tile scheduler metadata of FlashMLA
|
| 12 |
+
"""
|
| 13 |
+
|
| 14 |
+
@dataclasses.dataclass
|
| 15 |
+
class Config:
|
| 16 |
+
b: int
|
| 17 |
+
s_q: int
|
| 18 |
+
h_q: int
|
| 19 |
+
page_block_size: int
|
| 20 |
+
h_k: int
|
| 21 |
+
|
| 22 |
+
causal: bool
|
| 23 |
+
is_fp8_kvcache: bool
|
| 24 |
+
topk: Optional[int]
|
| 25 |
+
|
| 26 |
+
extra_page_block_size: Optional[int]
|
| 27 |
+
extra_topk: Optional[int]
|
| 28 |
+
|
| 29 |
+
have_initialized: bool = False
|
| 30 |
+
|
| 31 |
+
config: Optional[Config] = None
|
| 32 |
+
|
| 33 |
+
tile_scheduler_metadata: Optional[torch.Tensor] = None # (num_sm_parts, TileSchedulerMetaDataSize), dtype torch.int32.
|
| 34 |
+
num_splits: Optional[torch.Tensor] = None # (1), dtype torch.int32.
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
def get_mla_metadata(
|
| 38 |
+
*args,
|
| 39 |
+
**kwargs
|
| 40 |
+
) -> Tuple[FlashMLASchedMeta, None]:
|
| 41 |
+
"""
|
| 42 |
+
Returns an empty instance of FlashMLASchedMeta. The actual scheduling metadata will be generated during the first invocation of flash_mla_with_kvcache.
|
| 43 |
+
|
| 44 |
+
Arguments:
|
| 45 |
+
This function does not need any arguments, but we keep *args and **kwargs to be compatible with the old interface.
|
| 46 |
+
|
| 47 |
+
Return:
|
| 48 |
+
A tuple. Due to historical reasons, we return a tuple of (FlashMLASchedMeta, None) now. Only the first element is useful.
|
| 49 |
+
"""
|
| 50 |
+
return FlashMLASchedMeta(), None
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
def flash_mla_with_kvcache(
|
| 54 |
+
q: torch.Tensor,
|
| 55 |
+
k_cache: torch.Tensor,
|
| 56 |
+
block_table: Optional[torch.Tensor],
|
| 57 |
+
cache_seqlens: Optional[torch.Tensor],
|
| 58 |
+
head_dim_v: int,
|
| 59 |
+
tile_scheduler_metadata: FlashMLASchedMeta,
|
| 60 |
+
num_splits: None = None,
|
| 61 |
+
softmax_scale: Optional[float] = None,
|
| 62 |
+
causal: bool = False,
|
| 63 |
+
is_fp8_kvcache: bool = False,
|
| 64 |
+
indices: Optional[torch.Tensor] = None,
|
| 65 |
+
attn_sink: Optional[torch.Tensor] = None,
|
| 66 |
+
extra_k_cache: Optional[torch.Tensor] = None,
|
| 67 |
+
extra_indices_in_kvcache: Optional[torch.Tensor] = None,
|
| 68 |
+
topk_length: Optional[torch.Tensor] = None,
|
| 69 |
+
extra_topk_length: Optional[torch.Tensor] = None
|
| 70 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 71 |
+
"""
|
| 72 |
+
Arguments:
|
| 73 |
+
q: (batch_size, seq_len_q, num_heads_q, head_dim).
|
| 74 |
+
k_cache: (num_blocks, page_block_size, num_heads_k, head_dim).
|
| 75 |
+
Different modes (including fp8/bf16, and sparsity) has different KV cache layouts. See comments below for details.
|
| 76 |
+
The KV cache must be contiguously valid for sparse attention on sm100. Here "contiguously valid" means that every byte, from the very beginning of the KV cache, till the last byte in the KV cache, is valid memory address to visit (i.e. won't IMA). In other words, the KV cache could be a slice of a larger array, but cannot be a list of disjoint memory blocks.
|
| 77 |
+
block_table: (batch_size, max_num_blocks_per_seq), torch.int32. Can be None when sparse attention is used.
|
| 78 |
+
cache_seqlens: (batch_size), torch.int32. Can be None when sparse attention is used.
|
| 79 |
+
head_dim_v: Head_dim of v. Must be 512
|
| 80 |
+
sched_meta: FlashMLASchedMeta, return by get_mla_metadata. You may reuse the same sched_meta across different invocations, but only when the tensor shapes and the values of cache_seqlens, topk_length, and extra_topk_length remain the same.
|
| 81 |
+
num_splits_placeholder: must be "None" (to be compatible with the old interface).
|
| 82 |
+
softmax_scale: float. The scaling of QK^T before applying softmax. Default to 1 / sqrt(head_dim_k).
|
| 83 |
+
causal: bool. Whether to apply causal attention mask. Only valid for dense attention
|
| 84 |
+
is_fp8_kvcache: bool.
|
| 85 |
+
indices: (batch_size, seq_len_q, topk). KV indices when sparse attention is enabled.
|
| 86 |
+
Pay attention that indices_in_kvcache[i][j][k] = (the index of the page block where token t resides) * block_size + (the offset of token t among the page block),
|
| 87 |
+
where t is the k-th token of the j-th q-sequence in the i-th batch.
|
| 88 |
+
attn_sink: Optional[torch.Tensor], (num_heads_q, ), torch.float32. If presented, the final output will be scaled by exp(lse) / (exp(lse) + exp(attn_sink)). Have no affect on the returned softmax_lse. +inf will cause the result to become 0.
|
| 89 |
+
extra_k_cache and extra_indices_in_kvcache: If provided, will attend to these extra tokens in addition to those in k_cache and indices_in_kvcache. Their format requirements are the same as k_cache and indices_in_kvcache respectively.
|
| 90 |
+
topk_length/extra_topk_length: (batch_size, ), torch.int32. If provided, only the leftmost topk_length indices will be processed. Useful when the actual topk for different queries are different so that we can save some computation, compared to masking.
|
| 91 |
+
|
| 92 |
+
For DeepSeek V3, DeepSeek V3.1, and DeepSeek V3.2:
|
| 93 |
+
head_dim should be 576 while head_dim_v should be 512.
|
| 94 |
+
In FP8+sparse mode, each token's KV cache is 656 Bytes, structured as:
|
| 95 |
+
- The shape of the tensor `k_cache` is (num_blocks, page_block_size, num_heads_k, head_dim), and num_heads_k must be 1.
|
| 96 |
+
- First 512 bytes: The "quantized NoPE" part, containing 512 float8_e4m3 values.
|
| 97 |
+
- Next 16 bytes: Scale factors, containing 4 float32 values. The first float32 is the scale for the first 128 float8_e4m3 values, the second for the next 128, and so on.
|
| 98 |
+
- Last 128 bytes: The "RoPE" part, containing 64 bfloat16 values. This part is not quantized for accuracy.
|
| 99 |
+
|
| 100 |
+
Return:
|
| 101 |
+
out: (batch_size, seq_len_q, num_heads_q, head_dim_v).
|
| 102 |
+
softmax_lse: (batch_size, num_heads_q, seq_len_q), torch.float32.
|
| 103 |
+
"""
|
| 104 |
+
sched_meta = tile_scheduler_metadata
|
| 105 |
+
indices_in_kvcache = indices
|
| 106 |
+
assert isinstance(sched_meta, FlashMLASchedMeta), "tile_scheduler_metadata must be of type FlashMLASchedMeta"
|
| 107 |
+
assert num_splits is None, "num_splits must be None"
|
| 108 |
+
|
| 109 |
+
topk = indices_in_kvcache.shape[-1] if indices_in_kvcache is not None else None
|
| 110 |
+
extra_k_page_block_size = extra_k_cache.shape[1] if extra_k_cache is not None else None
|
| 111 |
+
extra_topk = extra_indices_in_kvcache.shape[-1] if extra_indices_in_kvcache is not None else None
|
| 112 |
+
if softmax_scale is None:
|
| 113 |
+
softmax_scale = q.shape[-1] ** (-0.5)
|
| 114 |
+
|
| 115 |
+
if not sched_meta.have_initialized:
|
| 116 |
+
# Sanity check. We only perform sanity check during the first invocation to save CPU time.
|
| 117 |
+
if indices_in_kvcache is not None:
|
| 118 |
+
assert not causal, "causal must be False when indices_in_kvcache is not None (i.e. sparse attention is enabled)"
|
| 119 |
+
|
| 120 |
+
# Initialize the tile scheduler metadata during the first invocation.
|
| 121 |
+
sched_meta.have_initialized = True
|
| 122 |
+
sched_meta.config = FlashMLASchedMeta.Config(
|
| 123 |
+
q.shape[0],
|
| 124 |
+
q.shape[1],
|
| 125 |
+
q.shape[2],
|
| 126 |
+
k_cache.shape[1],
|
| 127 |
+
k_cache.shape[2],
|
| 128 |
+
|
| 129 |
+
causal,
|
| 130 |
+
is_fp8_kvcache,
|
| 131 |
+
topk,
|
| 132 |
+
|
| 133 |
+
extra_k_page_block_size,
|
| 134 |
+
extra_topk,
|
| 135 |
+
)
|
| 136 |
+
else:
|
| 137 |
+
# Check whether the input arguments are consistent with sched_meta
|
| 138 |
+
helper_msg = " Your input arguments are inconsistent with sched_meta. Please make sure the input arguments are consistent across different invocations of flash_mla_with_kvcache on the same sched_meta."
|
| 139 |
+
assert sched_meta.config is not None
|
| 140 |
+
assert sched_meta.config.b == q.shape[0], "sched_meta.config.b must be equal to batch_size." + helper_msg
|
| 141 |
+
assert sched_meta.config.s_q == q.shape[1], "sched_meta.config.s_q must be equal to seq_len_q." + helper_msg
|
| 142 |
+
assert sched_meta.config.h_q == q.shape[2], "sched_meta.config.h_q must be equal to num_heads_q." + helper_msg
|
| 143 |
+
assert sched_meta.config.page_block_size == k_cache.shape[1], "sched_meta.config.page_block_size must be equal to page_block_size." + helper_msg
|
| 144 |
+
assert sched_meta.config.h_k == k_cache.shape[2], "sched_meta.config.h_k must be equal to num_heads_k." + helper_msg
|
| 145 |
+
assert sched_meta.config.causal == causal, "sched_meta.config.causal must be equal to causal." + helper_msg
|
| 146 |
+
assert sched_meta.config.is_fp8_kvcache == is_fp8_kvcache, "sched_meta.config.is_fp8_kvcache must be equal to is_fp8_kvcache." + helper_msg
|
| 147 |
+
assert sched_meta.config.topk == topk, "sched_meta.config.topk must be equal to the last dim of indices_in_kvcache." + helper_msg
|
| 148 |
+
assert sched_meta.config.extra_page_block_size == extra_k_page_block_size, "sched_meta.config.extra_page_block_size must be equal to the page_block_size of extra_k_cache." + helper_msg
|
| 149 |
+
assert sched_meta.config.extra_topk == extra_topk, "sched_meta.config.extra_topk must be equal to the last dim of extra_indices_in_kvcache." + helper_msg
|
| 150 |
+
|
| 151 |
+
if topk is not None:
|
| 152 |
+
# Sparse attention
|
| 153 |
+
assert not causal, "causal must be False when sparse attention is enabled"
|
| 154 |
+
assert is_fp8_kvcache, "is_fp8_kvcache must be True when sparse attention is enabled"
|
| 155 |
+
out, lse, new_tile_scheduler_metadata, new_num_splits = flash_mla_cuda.sparse_decode_fwd(
|
| 156 |
+
q, k_cache, indices_in_kvcache, topk_length, attn_sink,
|
| 157 |
+
sched_meta.tile_scheduler_metadata, sched_meta.num_splits,
|
| 158 |
+
extra_k_cache, extra_indices_in_kvcache, extra_topk_length,
|
| 159 |
+
head_dim_v, softmax_scale
|
| 160 |
+
)
|
| 161 |
+
else:
|
| 162 |
+
# Dense attention
|
| 163 |
+
assert indices_in_kvcache is None and attn_sink is None and extra_k_cache is None and extra_indices_in_kvcache is None and topk_length is None and extra_topk_length is None, "indices_in_kvcache, attn_sink, extra_k_cache, extra_indices_in_kvcache, topk_length and extra_topk_length must be None when dense attention is used."
|
| 164 |
+
assert block_table is not None and cache_seqlens is not None, "block_table and cache_seqlens must be provided when dense attention is used."
|
| 165 |
+
out, lse, new_tile_scheduler_metadata, new_num_splits = flash_mla_cuda.dense_decode_fwd(
|
| 166 |
+
q, k_cache, head_dim_v,
|
| 167 |
+
cache_seqlens, block_table,
|
| 168 |
+
softmax_scale, causal,
|
| 169 |
+
sched_meta.tile_scheduler_metadata, sched_meta.num_splits
|
| 170 |
+
)
|
| 171 |
+
sched_meta.tile_scheduler_metadata = new_tile_scheduler_metadata
|
| 172 |
+
sched_meta.num_splits = new_num_splits
|
| 173 |
+
return (out, lse)
|
| 174 |
+
|
| 175 |
+
|
| 176 |
+
def flash_mla_sparse_fwd(
|
| 177 |
+
q: torch.Tensor,
|
| 178 |
+
kv: torch.Tensor,
|
| 179 |
+
indices: torch.Tensor,
|
| 180 |
+
sm_scale: float,
|
| 181 |
+
d_v: int = 512,
|
| 182 |
+
attn_sink: Optional[torch.Tensor] = None,
|
| 183 |
+
topk_length: Optional[torch.Tensor] = None,
|
| 184 |
+
) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
|
| 185 |
+
"""
|
| 186 |
+
Sparse attention prefill kernel
|
| 187 |
+
|
| 188 |
+
Args:
|
| 189 |
+
q: [s_q, h_q, d_qk], bfloat16
|
| 190 |
+
kv: [s_kv, h_kv, d_qk], bfloat16
|
| 191 |
+
indices: [s_q, h_kv, topk], int32. Invalid indices should be set to -1 or numbers >= s_kv
|
| 192 |
+
sm_scale: float
|
| 193 |
+
d_v: The dimension of value vectors. Can only be 512
|
| 194 |
+
attn_sink: optional, [h_q], float32.
|
| 195 |
+
If attn_sink is provided, when computing output, output will be additionally multiplied by exp(lse) / (exp(lse) + exp(attn_sink)).
|
| 196 |
+
+-inf in attn_sink will be handled normally (i.e., -inf has no effect, +inf will make corresponding output all zeros).
|
| 197 |
+
This argument has no effect on lse and max_logits.
|
| 198 |
+
topk_length: optional, [s_q], int32. If provided, the i-th q token will only attend to k tokens specified by indices[i, :, :topk_length[i]], ignoring later k/v tokens (even if provided in indices).
|
| 199 |
+
In extremely rare cases (topk_length provided, there is a valid topk index between topk_length[i] ~ s_kv, and that topk index points to a k token containing NaN), operator output will contain NaN, so please avoid this situation.
|
| 200 |
+
|
| 201 |
+
Returns:
|
| 202 |
+
(output, max_logits, lse)
|
| 203 |
+
Please refer to tests/ref.py for the precise definitions of these parameters.
|
| 204 |
+
- output: [s_q, h_q, d_v], bfloat16
|
| 205 |
+
- max_logits: [s_q, h_q], float
|
| 206 |
+
- lse: [s_q, h_q], float, log-sum-exp of attention scores
|
| 207 |
+
"""
|
| 208 |
+
results = flash_mla_cuda.sparse_prefill_fwd(
|
| 209 |
+
q, kv, indices, sm_scale, d_v, attn_sink, topk_length
|
| 210 |
+
)
|
| 211 |
+
return results
|
| 212 |
+
|
| 213 |
+
|
| 214 |
+
def _flash_attn_varlen_forward(
|
| 215 |
+
q: torch.Tensor,
|
| 216 |
+
k: torch.Tensor,
|
| 217 |
+
v: torch.Tensor,
|
| 218 |
+
cu_seqlens_qo: torch.Tensor,
|
| 219 |
+
cu_seqlens_kv: torch.Tensor,
|
| 220 |
+
max_seqlen_qo: int,
|
| 221 |
+
max_seqlen_kv: int,
|
| 222 |
+
out: Optional[torch.Tensor] = None,
|
| 223 |
+
lse: Optional[torch.Tensor] = None,
|
| 224 |
+
causal: bool = False,
|
| 225 |
+
softmax_scale: Optional[float] = None,
|
| 226 |
+
is_varlen: bool = True,
|
| 227 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 228 |
+
qo_total_len, num_qo_heads, head_dim_qk = q.shape
|
| 229 |
+
kv_total_len, num_kv_heads, head_dim_vo = v.shape
|
| 230 |
+
|
| 231 |
+
mask_mode_code = 1 if causal else 0
|
| 232 |
+
if softmax_scale is None:
|
| 233 |
+
softmax_scale = head_dim_qk ** (-0.5)
|
| 234 |
+
|
| 235 |
+
if out is None:
|
| 236 |
+
out = torch.empty(qo_total_len, num_qo_heads, head_dim_vo, device=q.device, dtype=q.dtype)
|
| 237 |
+
if lse is None:
|
| 238 |
+
# Make lse contiguous on seqlen dim
|
| 239 |
+
lse = torch.empty(num_qo_heads, qo_total_len, device=q.device, dtype=torch.float32).T
|
| 240 |
+
|
| 241 |
+
workspace_buffer = torch.empty(32 * 1024 * 1024, dtype=torch.uint8, device=q.device)
|
| 242 |
+
flash_mla_cuda.dense_prefill_fwd(
|
| 243 |
+
workspace_buffer,
|
| 244 |
+
q,
|
| 245 |
+
k,
|
| 246 |
+
v,
|
| 247 |
+
cu_seqlens_qo,
|
| 248 |
+
cu_seqlens_kv,
|
| 249 |
+
out,
|
| 250 |
+
lse,
|
| 251 |
+
mask_mode_code,
|
| 252 |
+
softmax_scale,
|
| 253 |
+
max_seqlen_qo,
|
| 254 |
+
max_seqlen_kv,
|
| 255 |
+
is_varlen,
|
| 256 |
+
)
|
| 257 |
+
|
| 258 |
+
return out, lse
|
| 259 |
+
|
| 260 |
+
|
| 261 |
+
def _flash_attn_varlen_backward(
|
| 262 |
+
do: torch.Tensor,
|
| 263 |
+
q: torch.Tensor,
|
| 264 |
+
k: torch.Tensor,
|
| 265 |
+
v: torch.Tensor,
|
| 266 |
+
out: torch.Tensor,
|
| 267 |
+
lse: torch.Tensor,
|
| 268 |
+
cu_seqlens_qo: torch.Tensor,
|
| 269 |
+
cu_seqlens_kv: torch.Tensor,
|
| 270 |
+
max_seqlen_qo: int,
|
| 271 |
+
max_seqlen_kv: int,
|
| 272 |
+
dq: Optional[torch.Tensor] = None,
|
| 273 |
+
dk: Optional[torch.Tensor] = None,
|
| 274 |
+
dv: Optional[torch.Tensor] = None,
|
| 275 |
+
causal: bool = False,
|
| 276 |
+
softmax_scale: Optional[float] = None,
|
| 277 |
+
is_varlen: bool = True,
|
| 278 |
+
) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
|
| 279 |
+
qo_total_len, num_qo_heads, head_dim_qk = q.shape
|
| 280 |
+
kv_total_len, num_kv_heads, head_dim_vo = v.shape
|
| 281 |
+
|
| 282 |
+
# TODO: fix bwd GQA
|
| 283 |
+
if num_qo_heads != num_kv_heads:
|
| 284 |
+
raise ValueError(f"SM100 bwd doesn't support GQA now. num_qo_heads: {num_qo_heads}, num_kv_heads: {num_kv_heads}.")
|
| 285 |
+
|
| 286 |
+
mask_mode_code = 1 if causal else 0
|
| 287 |
+
if softmax_scale is None:
|
| 288 |
+
softmax_scale = head_dim_qk ** (-0.5)
|
| 289 |
+
|
| 290 |
+
if dq is None:
|
| 291 |
+
dq = torch.empty(qo_total_len, num_qo_heads, head_dim_qk, device=q.device, dtype=q.dtype)
|
| 292 |
+
if dk is None:
|
| 293 |
+
dk = torch.empty(kv_total_len, num_kv_heads, head_dim_qk, device=q.device, dtype=q.dtype)
|
| 294 |
+
if dv is None:
|
| 295 |
+
dv = torch.empty(kv_total_len, num_kv_heads, head_dim_vo, device=q.device, dtype=q.dtype)
|
| 296 |
+
|
| 297 |
+
max_seqlen_qo_aligned = (max_seqlen_qo + 7) // 8 * 8
|
| 298 |
+
bs = cu_seqlens_qo.shape[0] - 1
|
| 299 |
+
workspace_bytes = 0
|
| 300 |
+
workspace_bytes += 4 * bs * max_seqlen_qo_aligned * num_qo_heads * head_dim_qk # dQ_acc
|
| 301 |
+
workspace_bytes += 4 * max_seqlen_qo_aligned * bs * num_qo_heads * 2 # sum_OdO and scaled_lse
|
| 302 |
+
if num_qo_heads != num_kv_heads:
|
| 303 |
+
workspace_bytes += 2 * kv_total_len * num_qo_heads * (head_dim_qk + head_dim_vo) # dKV_acc
|
| 304 |
+
workspace_buffer = torch.empty(workspace_bytes, dtype=torch.uint8, device=q.device)
|
| 305 |
+
flash_mla_cuda.dense_prefill_bwd(
|
| 306 |
+
workspace_buffer,
|
| 307 |
+
do,
|
| 308 |
+
q,
|
| 309 |
+
k,
|
| 310 |
+
v,
|
| 311 |
+
out,
|
| 312 |
+
lse,
|
| 313 |
+
cu_seqlens_qo,
|
| 314 |
+
cu_seqlens_kv,
|
| 315 |
+
dq,
|
| 316 |
+
dk,
|
| 317 |
+
dv,
|
| 318 |
+
mask_mode_code,
|
| 319 |
+
softmax_scale,
|
| 320 |
+
max_seqlen_qo,
|
| 321 |
+
max_seqlen_kv,
|
| 322 |
+
is_varlen,
|
| 323 |
+
)
|
| 324 |
+
|
| 325 |
+
return dq, dk, dv
|
| 326 |
+
|
| 327 |
+
|
| 328 |
+
class FlashAttnVarlenFunc(torch.autograd.Function):
|
| 329 |
+
def forward(
|
| 330 |
+
ctx,
|
| 331 |
+
q: torch.Tensor,
|
| 332 |
+
k: torch.Tensor,
|
| 333 |
+
v: torch.Tensor,
|
| 334 |
+
cu_seqlens_qo: torch.Tensor,
|
| 335 |
+
cu_seqlens_kv: torch.Tensor,
|
| 336 |
+
max_seqlen_qo: int,
|
| 337 |
+
max_seqlen_kv: int,
|
| 338 |
+
causal: bool = False,
|
| 339 |
+
softmax_scale: Optional[float] = None,
|
| 340 |
+
is_varlen: bool = True,
|
| 341 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 342 |
+
out, lse = _flash_attn_varlen_forward(
|
| 343 |
+
q, k, v,
|
| 344 |
+
cu_seqlens_qo, cu_seqlens_kv, max_seqlen_qo, max_seqlen_kv,
|
| 345 |
+
causal=causal, softmax_scale=softmax_scale,
|
| 346 |
+
is_varlen=is_varlen,
|
| 347 |
+
)
|
| 348 |
+
ctx.save_for_backward(q, k, v, out, lse, cu_seqlens_qo, cu_seqlens_kv)
|
| 349 |
+
ctx.max_seqlen_qo = max_seqlen_qo
|
| 350 |
+
ctx.max_seqlen_kv = max_seqlen_kv
|
| 351 |
+
ctx.causal = causal
|
| 352 |
+
ctx.softmax_scale = softmax_scale
|
| 353 |
+
ctx.is_varlen = is_varlen
|
| 354 |
+
return out, lse
|
| 355 |
+
|
| 356 |
+
def backward(
|
| 357 |
+
ctx,
|
| 358 |
+
do: torch.Tensor,
|
| 359 |
+
dlse: torch.Tensor,
|
| 360 |
+
):
|
| 361 |
+
del dlse # LSE doesn't support backward currently
|
| 362 |
+
q, k, v, out, lse, cu_seqlens_qo, cu_seqlens_kv = ctx.saved_tensors
|
| 363 |
+
dq, dk, dv = _flash_attn_varlen_backward(
|
| 364 |
+
do, q, k, v, out, lse,
|
| 365 |
+
cu_seqlens_qo, cu_seqlens_kv, ctx.max_seqlen_qo, ctx.max_seqlen_kv,
|
| 366 |
+
causal=ctx.causal, softmax_scale=ctx.softmax_scale,
|
| 367 |
+
is_varlen=ctx.is_varlen,
|
| 368 |
+
)
|
| 369 |
+
return dq, dk, dv, None, None, None, None, None, None, None
|
| 370 |
+
|
| 371 |
+
|
| 372 |
+
def flash_attn_varlen_func(
|
| 373 |
+
q: torch.Tensor,
|
| 374 |
+
k: torch.Tensor,
|
| 375 |
+
v: torch.Tensor,
|
| 376 |
+
cu_seqlens_qo: torch.Tensor,
|
| 377 |
+
cu_seqlens_kv: torch.Tensor,
|
| 378 |
+
max_seqlen_qo: int,
|
| 379 |
+
max_seqlen_kv: int,
|
| 380 |
+
dropout_p: float = 0.0,
|
| 381 |
+
softmax_scale: Optional[float] = None,
|
| 382 |
+
causal: bool = False,
|
| 383 |
+
deterministic: bool = False,
|
| 384 |
+
is_varlen: bool = True,
|
| 385 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 386 |
+
assert dropout_p == 0.0
|
| 387 |
+
assert not deterministic
|
| 388 |
+
return FlashAttnVarlenFunc.apply(
|
| 389 |
+
q, k, v,
|
| 390 |
+
cu_seqlens_qo, cu_seqlens_kv, max_seqlen_qo, max_seqlen_kv,
|
| 391 |
+
causal, softmax_scale, is_varlen,
|
| 392 |
+
)
|
| 393 |
+
|
| 394 |
+
|
| 395 |
+
def flash_attn_varlen_qkvpacked_func(
|
| 396 |
+
qkv: torch.Tensor,
|
| 397 |
+
cu_seqlens: torch.Tensor,
|
| 398 |
+
max_seqlen: int,
|
| 399 |
+
head_dim_qk: int,
|
| 400 |
+
dropout_p: float = 0.0,
|
| 401 |
+
softmax_scale: Optional[float] = None,
|
| 402 |
+
causal: bool = False,
|
| 403 |
+
deterministic: bool = False,
|
| 404 |
+
is_varlen: bool = True,
|
| 405 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 406 |
+
assert dropout_p == 0.0
|
| 407 |
+
assert not deterministic
|
| 408 |
+
return FlashAttnVarlenFunc.apply(
|
| 409 |
+
qkv[:, :, :head_dim_qk], qkv[:, :, head_dim_qk:head_dim_qk * 2], qkv[:, :, head_dim_qk * 2:],
|
| 410 |
+
cu_seqlens, cu_seqlens, max_seqlen, max_seqlen,
|
| 411 |
+
causal, softmax_scale, is_varlen,
|
| 412 |
+
)
|
| 413 |
+
|
| 414 |
+
|
| 415 |
+
def flash_attn_varlen_kvpacked_func(
|
| 416 |
+
q: torch.Tensor,
|
| 417 |
+
kv: torch.Tensor,
|
| 418 |
+
cu_seqlens_qo: torch.Tensor,
|
| 419 |
+
cu_seqlens_kv: torch.Tensor,
|
| 420 |
+
max_seqlen_qo: int,
|
| 421 |
+
max_seqlen_kv: int,
|
| 422 |
+
head_dim_qk: int,
|
| 423 |
+
dropout_p: float = 0.0,
|
| 424 |
+
softmax_scale: Optional[float] = None,
|
| 425 |
+
causal: bool = False,
|
| 426 |
+
deterministic: bool = False,
|
| 427 |
+
is_varlen: bool = True,
|
| 428 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 429 |
+
assert dropout_p == 0.0
|
| 430 |
+
assert not deterministic
|
| 431 |
+
return FlashAttnVarlenFunc.apply(
|
| 432 |
+
q, kv[:, :, :head_dim_qk], kv[:, :, head_dim_qk:],
|
| 433 |
+
cu_seqlens_qo, cu_seqlens_kv, max_seqlen_qo, max_seqlen_kv,
|
| 434 |
+
causal, softmax_scale, is_varlen,
|
| 435 |
+
)
|
build/torch214-cxx11-cu130-x86_64-linux/metadata.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "flash-mla",
|
| 3 |
+
"id": "_flash_mla_cuda_addf474",
|
| 4 |
+
"version": 1,
|
| 5 |
+
"license": "MIT",
|
| 6 |
+
"python-depends": [],
|
| 7 |
+
"kernel-depends": [],
|
| 8 |
+
"backend": {
|
| 9 |
+
"type": "cuda",
|
| 10 |
+
"archs": [
|
| 11 |
+
"10.0f",
|
| 12 |
+
"9.0a"
|
| 13 |
+
]
|
| 14 |
+
},
|
| 15 |
+
"digest": {
|
| 16 |
+
"algorithm": "sha256",
|
| 17 |
+
"files": {
|
| 18 |
+
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 19 |
+
"_flash_mla_cuda_addf474.abi3.so": "geAIUapi0WerQUyHj77lqkbVaDsRRDfq2H1JxaQR9NA=",
|
| 20 |
+
"_ops.py": "127vMzGPzwgnEABQxo12emwqoX29KOApmtNgy+n0QPs=",
|
| 21 |
+
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
+
}
|
| 23 |
+
},
|
| 24 |
+
"provenance": {
|
| 25 |
+
"kernel-builder": {
|
| 26 |
+
"version": "0.17.0-dev0",
|
| 27 |
+
"commit": "081dcd473f8eca27226eef1f9c47c45b86c756b5",
|
| 28 |
+
"dirty": false
|
| 29 |
+
},
|
| 30 |
+
"kernel": {
|
| 31 |
+
"commit": "addf4741fafb55b4c101b15985dfaeea7c7c2f3a",
|
| 32 |
+
"dirty": false
|
| 33 |
+
}
|
| 34 |
+
}
|
| 35 |
+
}
|
build/torch214-cxx11-cu130-x86_64-linux/metadata.json.sigstore
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHSTCCBtCgAwIBAgIUHeoPLdr7Am5w8nNgbajuAAVAxbAwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwODI3MDY1MDQ3WhcNMjYwODI3MDcwMDQ3WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6pETbRgYtL4lVaC56BPA8UzSjcjaAQMSvnShjx9HRjltUZMcdt3wKdt8hla61bWh999YG1qeopAFB9QJlw1R6aOCBe8wggXrMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUmgvB8fCLTNJ0LjnuMYnT0XECgdYwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKGFkZGY0NzQxZmFmYjU1YjRjMTAxYjE1OTg1ZGZhZWVhN2M3YzJmM2EwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMzMwNDUzODQwMTMvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoEH8SU4AAAQDAEYwRAIgKOyRny8SkKPcYqgCjK+GK5mwcXFm//D84z0z2t1Yh+cCIHEztihiFyp2bu8zVsY5N6N2SqlkrPqTiFmLXNUs1bxqMAoGCCqGSM49BAMDA2cAMGQCMDmxnHCpO8zvfVSMJQKK7dt4KKGa7r67C+B+p+M2HMZ2a6rhHIUJEXPmuo6iOoIAWQIwP0WjOr+5wrlUCmTqkx/QafgkEkANlJIUlBXpBYmDlTY27hFGrwLwBzSUFyjtmJzy"}, "tlogEntries":[{"logIndex":"2613808614", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1787813448", "inclusionPromise":{"signedEntryTimestamp":"MEYCIQClogH2Jiok+iYcYPuDeCtoGgoiatEOKHLs6R8HSGFuigIhALMLC49VMkeMSBlH5IZ3o3WCiD/jZuFmDXjS2QM50clz"}, "inclusionProof":{"logIndex":"2491904352", "rootHash":"9reO06oMujGbYhTrUFotnhAB5ZbP3bs+mBN3miixmUg=", "treeSize":"2491904360", "hashes":["BX5hgx29A2nFAgLJ1FdyR/bASQ++WgLgTgINkyEavaI=", "CZAs+B1Da0WAmC5TCwjSfG4T6H3m34bkr7GtRuWki6o=", "A46odAfYx0tXqejK/KHjYw8ABQmTmkOnAJigazZM+tU=", "rdAa2VVPkdI2mjJ8B+t1FG/48un11nLiN4FXBH8cKD0=", "6IiWg5Dli9JkK5LMyjKdGWlQZiJjajBlOpq9UKg91kU=", "WFkdBtZeB/9pi2cCGpSSWDwEiMd3X10C1a6VptZiXoQ=", "riGebUJvFYEgCFSvpgso18qqbOHt0UvnZbNnYRA1xgc=", "AQSNk7LiajM2R60yCNOFer58otd41w8EZeNGjIlrmKY=", "2iu6MtbtwIBPWceOVpEntK/ScYeDCwQqeef9T+ZN1rg=", "PxB3thBKvs/N/+byXE6INhKRq76cWuFxeRGfVH2nJIo=", "vdSNqW8JzoTD5q4Kg73sWD1h0oayYiUaSbfeC6nVz18=", "E7AEzQrWJL3fkxC6doP8J8+b69/ILUYXJjzAAPrp8Oo=", "7TfDCaMWgEwSJEZd/e33b24919rF4IDJLmbqNNRNhZs=", "0HfdxDt/zGugZLIuHasrdLEW9s8OaTykSSqBEDFQXdw=", "SndbMKVtcTenAkwi2JBfGzD+mhexp1qJbRIY+A1JRIU=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2491904360\n9reO06oMujGbYhTrUFotnhAB5ZbP3bs+mBN3miixmUg=\n\n— rekor.sigstore.dev wNI9ajBFAiEAuVfrnPN+ywzcjZriaB3co+GZYIWxihFlrfyi15qVyHkCIF5mBkz6fvwMNV4QYgyDrJQ+oqXzEGFpfrES3uqzUWDT\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJhMDI5NjJiNjdiNDBiNmMxYTY4ODMwZGMxNWY4MjYyMGY4N2NkOTA0YmFmYjBiYWE5NjQyNjEwNjEyMWJlN2I5In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJRkE1bmNOSzNXYjIzN0ZWVjFOUFlOc1VERU5GRTk2V1ZjL0piZG5kQzlENkFpQmFsYnZycURVUXU5UE91R3A2K3pCOXpERm5nTE82T1g1WWN4eGtRM1E0Qmc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRWRU5EUW5SRFowRjNTVUpCWjBsVlNHVnZVRXhrY2pkQmJUVjNPRzVPWjJKaGFuVkJRVlpCZUdKQmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlFU1ROTlJGa3hUVVJSTTFkb1kwNU5hbGwzVDBSSk0wMUVZM2ROUkZFelYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVUyY0VWVVlsSm5XWFJNTkd4V1lVTTFOa0pRUVRoVmVsTnFZMnBoUVZGTlUzWnVVMmdLYW5nNVNGSnFiSFJWV2sxalpIUXpkMHRrZERob2JHRTJNV0pYYURrNU9WbEhNWEZsYjNCQlJrSTVVVXBzZHpGU05tRlBRMEpsT0hkbloxaHlUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZ0WjNaQ0NqaG1RMHhVVGtvd1RHcHVkVTFaYmxRd1dFVkRaMlJaZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOVpWMUpyV21wUk0wNUVSbTFaVjFwcFRsUldhVTVIVFhoTlJFWnBDazFVVlRWUFJGWnJXbTFHYkZwWFJUTlplbVJxVFcxWmVsbFVRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMWxYVW10YWFsRXpUa1JHYlZsWFdtbE9WRlpwVGtkTmVFMUVSbWxOVkZVMVQwUldhMXB0Um13S1dsZEZNMWw2WkdwTmJWbDZXVlJCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMWxYVW10YWFsRXpUa1JHYlZsWFdtbE9WRlpwVGtkTmVFMUVSbWtLVFZSVk5VOUVWbXRhYlVac1dsZEZNMWw2WkdwTmJWbDZXVlJCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwZEdhMXBIV1RBS1RucFJlRnB0Um0xWmFsVXhXV3BTYWsxVVFYaFpha1V4VDFSbk1WcEhXbWhhVjFab1RqSk5NMWw2U20xTk1rVjNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOZWsxM1RrUlZlazlFVVhkTlZFMTJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwVVZsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTTjBKSWEwRUtaSGRDTVVGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtOUZTRGhUVlRSQlFVRlJSQXBCUlZsM1VrRkpaMHRQZVZKdWVUaFRhMHRRWTFseFowTnFTeXRIU3pWdGQyTllSbTB2TDBRNE5Ib3dlakowTVZsb0syTkRTVWhGZW5ScGFHbEdlWEF5Q21KMU9IcFdjMWsxVGpaT01sTnhiR3R5VUhGVWFVWnRURmhPVlhNeFluaHhUVUZ2UjBORGNVZFRUVFE1UWtGTlJFRXlZMEZOUjFGRFRVUnRlRzVJUTNBS1R6aDZkbVpXVTAxS1VVdExOMlIwTkV0TFIyRTNjalkzUXl0Q0szQXJUVEpJVFZveVlUWnlhRWhKVlVwRldGQnRkVzgyYVU5dlNVRlhVVWwzVURCWGFncFBjaXMxZDNKc1ZVTnRWSEZyZUM5UllXWm5hMFZyUVU1c1NrbFZiRUpZY0VKWmJVUnNWRmt5TjJoR1IzSjNUSGRDZWxOVlJubHFkRzFLZW5rS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg4HYRKJSAdX0H+uHK9OCVHpZK+CAgkCIFDSWFMBVlyVYCFQDOEjVIclegTzudvAWpIS784JAiDRgPMjAyNjA4MjcwNjUwNDhaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDgyNzA2NTA0OFowLwYJKoZIhvcNAQkEMSIEINIYP6RuL92rFUJLhODLP4t1bIu2u14ClT4GBLVNCnaHMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMDg/1AUGIXBYYNzpNa/kCtlx32uk/WkrWdh0tN+csTvErbyp0ejh4erY/6czjrq2gQIxAMKjPDcN4bPUsVG29ANM53G2LbBgllKeai0EGFbHWtsJkCFkRv4GdHR0/H4NbJgIMg=="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"oClitntAtsGmiDDcFfgmIPh82QS6+wuqlkJhBhIb57k="}, "signature":"MEQCIFA5ncNK3Wb237FVV1NPYNsUDENFE96WVc/JbdndC9D6AiBalbvrqDUQu9POuGp6+zB9zDFngLO6OX5YcxxkQ3Q4Bg=="}}
|
build/torch214-cxx11-cu132-x86_64-linux/__init__.py
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import Optional, Tuple
|
| 2 |
+
import torch
|
| 3 |
+
|
| 4 |
+
from .flash_mla_interface import FlashMLASchedMeta
|
| 5 |
+
from . import flash_mla_interface as _impl
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
def get_mla_metadata(*args, **kwargs) -> Tuple[FlashMLASchedMeta, None]:
|
| 9 |
+
return _impl.get_mla_metadata(*args, **kwargs)
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
def flash_mla_with_kvcache(
|
| 13 |
+
q: torch.Tensor,
|
| 14 |
+
k_cache: torch.Tensor,
|
| 15 |
+
block_table: Optional[torch.Tensor],
|
| 16 |
+
cache_seqlens: Optional[torch.Tensor],
|
| 17 |
+
head_dim_v: int,
|
| 18 |
+
tile_scheduler_metadata: FlashMLASchedMeta,
|
| 19 |
+
num_splits: None = None,
|
| 20 |
+
softmax_scale: Optional[float] = None,
|
| 21 |
+
causal: bool = False,
|
| 22 |
+
is_fp8_kvcache: bool = False,
|
| 23 |
+
indices: Optional[torch.Tensor] = None,
|
| 24 |
+
attn_sink: Optional[torch.Tensor] = None,
|
| 25 |
+
extra_k_cache: Optional[torch.Tensor] = None,
|
| 26 |
+
extra_indices_in_kvcache: Optional[torch.Tensor] = None,
|
| 27 |
+
topk_length: Optional[torch.Tensor] = None,
|
| 28 |
+
extra_topk_length: Optional[torch.Tensor] = None,
|
| 29 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 30 |
+
return _impl.flash_mla_with_kvcache(
|
| 31 |
+
q=q,
|
| 32 |
+
k_cache=k_cache,
|
| 33 |
+
block_table=block_table,
|
| 34 |
+
cache_seqlens=cache_seqlens,
|
| 35 |
+
head_dim_v=head_dim_v,
|
| 36 |
+
tile_scheduler_metadata=tile_scheduler_metadata,
|
| 37 |
+
num_splits=num_splits,
|
| 38 |
+
softmax_scale=softmax_scale,
|
| 39 |
+
causal=causal,
|
| 40 |
+
is_fp8_kvcache=is_fp8_kvcache,
|
| 41 |
+
indices=indices,
|
| 42 |
+
attn_sink=attn_sink,
|
| 43 |
+
extra_k_cache=extra_k_cache,
|
| 44 |
+
extra_indices_in_kvcache=extra_indices_in_kvcache,
|
| 45 |
+
topk_length=topk_length,
|
| 46 |
+
extra_topk_length=extra_topk_length,
|
| 47 |
+
)
|
| 48 |
+
|
| 49 |
+
|
| 50 |
+
def flash_mla_sparse_fwd(
|
| 51 |
+
q: torch.Tensor,
|
| 52 |
+
kv: torch.Tensor,
|
| 53 |
+
indices: torch.Tensor,
|
| 54 |
+
sm_scale: float,
|
| 55 |
+
d_v: int = 512,
|
| 56 |
+
attn_sink: Optional[torch.Tensor] = None,
|
| 57 |
+
topk_length: Optional[torch.Tensor] = None,
|
| 58 |
+
) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
|
| 59 |
+
return _impl.flash_mla_sparse_fwd(
|
| 60 |
+
q=q,
|
| 61 |
+
kv=kv,
|
| 62 |
+
indices=indices,
|
| 63 |
+
sm_scale=sm_scale,
|
| 64 |
+
d_v=d_v,
|
| 65 |
+
attn_sink=attn_sink,
|
| 66 |
+
topk_length=topk_length,
|
| 67 |
+
)
|
| 68 |
+
|
| 69 |
+
|
| 70 |
+
def flash_attn_varlen_func(
|
| 71 |
+
q: torch.Tensor,
|
| 72 |
+
k: torch.Tensor,
|
| 73 |
+
v: torch.Tensor,
|
| 74 |
+
cu_seqlens_qo: torch.Tensor,
|
| 75 |
+
cu_seqlens_kv: torch.Tensor,
|
| 76 |
+
max_seqlen_qo: int,
|
| 77 |
+
max_seqlen_kv: int,
|
| 78 |
+
dropout_p: float = 0.0,
|
| 79 |
+
softmax_scale: Optional[float] = None,
|
| 80 |
+
causal: bool = False,
|
| 81 |
+
deterministic: bool = False,
|
| 82 |
+
is_varlen: bool = True,
|
| 83 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 84 |
+
return _impl.flash_attn_varlen_func(
|
| 85 |
+
q=q,
|
| 86 |
+
k=k,
|
| 87 |
+
v=v,
|
| 88 |
+
cu_seqlens_qo=cu_seqlens_qo,
|
| 89 |
+
cu_seqlens_kv=cu_seqlens_kv,
|
| 90 |
+
max_seqlen_qo=max_seqlen_qo,
|
| 91 |
+
max_seqlen_kv=max_seqlen_kv,
|
| 92 |
+
dropout_p=dropout_p,
|
| 93 |
+
softmax_scale=softmax_scale,
|
| 94 |
+
causal=causal,
|
| 95 |
+
deterministic=deterministic,
|
| 96 |
+
is_varlen=is_varlen,
|
| 97 |
+
)
|
| 98 |
+
|
| 99 |
+
|
| 100 |
+
def flash_attn_varlen_qkvpacked_func(
|
| 101 |
+
qkv: torch.Tensor,
|
| 102 |
+
cu_seqlens: torch.Tensor,
|
| 103 |
+
max_seqlen: int,
|
| 104 |
+
head_dim_qk: int,
|
| 105 |
+
dropout_p: float = 0.0,
|
| 106 |
+
softmax_scale: Optional[float] = None,
|
| 107 |
+
causal: bool = False,
|
| 108 |
+
deterministic: bool = False,
|
| 109 |
+
is_varlen: bool = True,
|
| 110 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 111 |
+
return _impl.flash_attn_varlen_qkvpacked_func(
|
| 112 |
+
qkv=qkv,
|
| 113 |
+
cu_seqlens=cu_seqlens,
|
| 114 |
+
max_seqlen=max_seqlen,
|
| 115 |
+
head_dim_qk=head_dim_qk,
|
| 116 |
+
dropout_p=dropout_p,
|
| 117 |
+
softmax_scale=softmax_scale,
|
| 118 |
+
causal=causal,
|
| 119 |
+
deterministic=deterministic,
|
| 120 |
+
is_varlen=is_varlen,
|
| 121 |
+
)
|
| 122 |
+
|
| 123 |
+
|
| 124 |
+
def flash_attn_varlen_kvpacked_func(
|
| 125 |
+
q: torch.Tensor,
|
| 126 |
+
kv: torch.Tensor,
|
| 127 |
+
cu_seqlens_qo: torch.Tensor,
|
| 128 |
+
cu_seqlens_kv: torch.Tensor,
|
| 129 |
+
max_seqlen_qo: int,
|
| 130 |
+
max_seqlen_kv: int,
|
| 131 |
+
head_dim_qk: int,
|
| 132 |
+
dropout_p: float = 0.0,
|
| 133 |
+
softmax_scale: Optional[float] = None,
|
| 134 |
+
causal: bool = False,
|
| 135 |
+
deterministic: bool = False,
|
| 136 |
+
is_varlen: bool = True,
|
| 137 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 138 |
+
return _impl.flash_attn_varlen_kvpacked_func(
|
| 139 |
+
q=q,
|
| 140 |
+
kv=kv,
|
| 141 |
+
cu_seqlens_qo=cu_seqlens_qo,
|
| 142 |
+
cu_seqlens_kv=cu_seqlens_kv,
|
| 143 |
+
max_seqlen_qo=max_seqlen_qo,
|
| 144 |
+
max_seqlen_kv=max_seqlen_kv,
|
| 145 |
+
head_dim_qk=head_dim_qk,
|
| 146 |
+
dropout_p=dropout_p,
|
| 147 |
+
softmax_scale=softmax_scale,
|
| 148 |
+
causal=causal,
|
| 149 |
+
deterministic=deterministic,
|
| 150 |
+
is_varlen=is_varlen,
|
| 151 |
+
)
|
| 152 |
+
|
| 153 |
+
|
| 154 |
+
__all__ = [
|
| 155 |
+
"__version__",
|
| 156 |
+
"FlashMLASchedMeta",
|
| 157 |
+
"get_mla_metadata",
|
| 158 |
+
"flash_mla_with_kvcache",
|
| 159 |
+
"flash_attn_varlen_func",
|
| 160 |
+
"flash_attn_varlen_qkvpacked_func",
|
| 161 |
+
"flash_attn_varlen_kvpacked_func",
|
| 162 |
+
"flash_mla_sparse_fwd",
|
| 163 |
+
]
|
build/torch214-cxx11-cu132-x86_64-linux/_flash_mla_cuda_addf474.abi3.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:57ee29253365f8e2fd87964570ca470c7da179bab5be06b45761b06bbdb4e420
|
| 3 |
+
size 7428712
|
build/torch214-cxx11-cu132-x86_64-linux/_ops.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from . import _flash_mla_cuda_addf474
|
| 3 |
+
ops = torch.ops._flash_mla_cuda_addf474
|
| 4 |
+
|
| 5 |
+
def add_op_namespace_prefix(op_name: str):
|
| 6 |
+
"""
|
| 7 |
+
Prefix op by namespace.
|
| 8 |
+
"""
|
| 9 |
+
return f"_flash_mla_cuda_addf474::{op_name}"
|
build/torch214-cxx11-cu132-x86_64-linux/flash_mla_interface.py
ADDED
|
@@ -0,0 +1,435 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import Optional, Tuple
|
| 2 |
+
import dataclasses
|
| 3 |
+
|
| 4 |
+
import torch
|
| 5 |
+
|
| 6 |
+
from ._ops import ops as flash_mla_cuda
|
| 7 |
+
|
| 8 |
+
@dataclasses.dataclass
|
| 9 |
+
class FlashMLASchedMeta:
|
| 10 |
+
"""
|
| 11 |
+
A class that stores the tile scheduler metadata of FlashMLA
|
| 12 |
+
"""
|
| 13 |
+
|
| 14 |
+
@dataclasses.dataclass
|
| 15 |
+
class Config:
|
| 16 |
+
b: int
|
| 17 |
+
s_q: int
|
| 18 |
+
h_q: int
|
| 19 |
+
page_block_size: int
|
| 20 |
+
h_k: int
|
| 21 |
+
|
| 22 |
+
causal: bool
|
| 23 |
+
is_fp8_kvcache: bool
|
| 24 |
+
topk: Optional[int]
|
| 25 |
+
|
| 26 |
+
extra_page_block_size: Optional[int]
|
| 27 |
+
extra_topk: Optional[int]
|
| 28 |
+
|
| 29 |
+
have_initialized: bool = False
|
| 30 |
+
|
| 31 |
+
config: Optional[Config] = None
|
| 32 |
+
|
| 33 |
+
tile_scheduler_metadata: Optional[torch.Tensor] = None # (num_sm_parts, TileSchedulerMetaDataSize), dtype torch.int32.
|
| 34 |
+
num_splits: Optional[torch.Tensor] = None # (1), dtype torch.int32.
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
def get_mla_metadata(
|
| 38 |
+
*args,
|
| 39 |
+
**kwargs
|
| 40 |
+
) -> Tuple[FlashMLASchedMeta, None]:
|
| 41 |
+
"""
|
| 42 |
+
Returns an empty instance of FlashMLASchedMeta. The actual scheduling metadata will be generated during the first invocation of flash_mla_with_kvcache.
|
| 43 |
+
|
| 44 |
+
Arguments:
|
| 45 |
+
This function does not need any arguments, but we keep *args and **kwargs to be compatible with the old interface.
|
| 46 |
+
|
| 47 |
+
Return:
|
| 48 |
+
A tuple. Due to historical reasons, we return a tuple of (FlashMLASchedMeta, None) now. Only the first element is useful.
|
| 49 |
+
"""
|
| 50 |
+
return FlashMLASchedMeta(), None
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
def flash_mla_with_kvcache(
|
| 54 |
+
q: torch.Tensor,
|
| 55 |
+
k_cache: torch.Tensor,
|
| 56 |
+
block_table: Optional[torch.Tensor],
|
| 57 |
+
cache_seqlens: Optional[torch.Tensor],
|
| 58 |
+
head_dim_v: int,
|
| 59 |
+
tile_scheduler_metadata: FlashMLASchedMeta,
|
| 60 |
+
num_splits: None = None,
|
| 61 |
+
softmax_scale: Optional[float] = None,
|
| 62 |
+
causal: bool = False,
|
| 63 |
+
is_fp8_kvcache: bool = False,
|
| 64 |
+
indices: Optional[torch.Tensor] = None,
|
| 65 |
+
attn_sink: Optional[torch.Tensor] = None,
|
| 66 |
+
extra_k_cache: Optional[torch.Tensor] = None,
|
| 67 |
+
extra_indices_in_kvcache: Optional[torch.Tensor] = None,
|
| 68 |
+
topk_length: Optional[torch.Tensor] = None,
|
| 69 |
+
extra_topk_length: Optional[torch.Tensor] = None
|
| 70 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 71 |
+
"""
|
| 72 |
+
Arguments:
|
| 73 |
+
q: (batch_size, seq_len_q, num_heads_q, head_dim).
|
| 74 |
+
k_cache: (num_blocks, page_block_size, num_heads_k, head_dim).
|
| 75 |
+
Different modes (including fp8/bf16, and sparsity) has different KV cache layouts. See comments below for details.
|
| 76 |
+
The KV cache must be contiguously valid for sparse attention on sm100. Here "contiguously valid" means that every byte, from the very beginning of the KV cache, till the last byte in the KV cache, is valid memory address to visit (i.e. won't IMA). In other words, the KV cache could be a slice of a larger array, but cannot be a list of disjoint memory blocks.
|
| 77 |
+
block_table: (batch_size, max_num_blocks_per_seq), torch.int32. Can be None when sparse attention is used.
|
| 78 |
+
cache_seqlens: (batch_size), torch.int32. Can be None when sparse attention is used.
|
| 79 |
+
head_dim_v: Head_dim of v. Must be 512
|
| 80 |
+
sched_meta: FlashMLASchedMeta, return by get_mla_metadata. You may reuse the same sched_meta across different invocations, but only when the tensor shapes and the values of cache_seqlens, topk_length, and extra_topk_length remain the same.
|
| 81 |
+
num_splits_placeholder: must be "None" (to be compatible with the old interface).
|
| 82 |
+
softmax_scale: float. The scaling of QK^T before applying softmax. Default to 1 / sqrt(head_dim_k).
|
| 83 |
+
causal: bool. Whether to apply causal attention mask. Only valid for dense attention
|
| 84 |
+
is_fp8_kvcache: bool.
|
| 85 |
+
indices: (batch_size, seq_len_q, topk). KV indices when sparse attention is enabled.
|
| 86 |
+
Pay attention that indices_in_kvcache[i][j][k] = (the index of the page block where token t resides) * block_size + (the offset of token t among the page block),
|
| 87 |
+
where t is the k-th token of the j-th q-sequence in the i-th batch.
|
| 88 |
+
attn_sink: Optional[torch.Tensor], (num_heads_q, ), torch.float32. If presented, the final output will be scaled by exp(lse) / (exp(lse) + exp(attn_sink)). Have no affect on the returned softmax_lse. +inf will cause the result to become 0.
|
| 89 |
+
extra_k_cache and extra_indices_in_kvcache: If provided, will attend to these extra tokens in addition to those in k_cache and indices_in_kvcache. Their format requirements are the same as k_cache and indices_in_kvcache respectively.
|
| 90 |
+
topk_length/extra_topk_length: (batch_size, ), torch.int32. If provided, only the leftmost topk_length indices will be processed. Useful when the actual topk for different queries are different so that we can save some computation, compared to masking.
|
| 91 |
+
|
| 92 |
+
For DeepSeek V3, DeepSeek V3.1, and DeepSeek V3.2:
|
| 93 |
+
head_dim should be 576 while head_dim_v should be 512.
|
| 94 |
+
In FP8+sparse mode, each token's KV cache is 656 Bytes, structured as:
|
| 95 |
+
- The shape of the tensor `k_cache` is (num_blocks, page_block_size, num_heads_k, head_dim), and num_heads_k must be 1.
|
| 96 |
+
- First 512 bytes: The "quantized NoPE" part, containing 512 float8_e4m3 values.
|
| 97 |
+
- Next 16 bytes: Scale factors, containing 4 float32 values. The first float32 is the scale for the first 128 float8_e4m3 values, the second for the next 128, and so on.
|
| 98 |
+
- Last 128 bytes: The "RoPE" part, containing 64 bfloat16 values. This part is not quantized for accuracy.
|
| 99 |
+
|
| 100 |
+
Return:
|
| 101 |
+
out: (batch_size, seq_len_q, num_heads_q, head_dim_v).
|
| 102 |
+
softmax_lse: (batch_size, num_heads_q, seq_len_q), torch.float32.
|
| 103 |
+
"""
|
| 104 |
+
sched_meta = tile_scheduler_metadata
|
| 105 |
+
indices_in_kvcache = indices
|
| 106 |
+
assert isinstance(sched_meta, FlashMLASchedMeta), "tile_scheduler_metadata must be of type FlashMLASchedMeta"
|
| 107 |
+
assert num_splits is None, "num_splits must be None"
|
| 108 |
+
|
| 109 |
+
topk = indices_in_kvcache.shape[-1] if indices_in_kvcache is not None else None
|
| 110 |
+
extra_k_page_block_size = extra_k_cache.shape[1] if extra_k_cache is not None else None
|
| 111 |
+
extra_topk = extra_indices_in_kvcache.shape[-1] if extra_indices_in_kvcache is not None else None
|
| 112 |
+
if softmax_scale is None:
|
| 113 |
+
softmax_scale = q.shape[-1] ** (-0.5)
|
| 114 |
+
|
| 115 |
+
if not sched_meta.have_initialized:
|
| 116 |
+
# Sanity check. We only perform sanity check during the first invocation to save CPU time.
|
| 117 |
+
if indices_in_kvcache is not None:
|
| 118 |
+
assert not causal, "causal must be False when indices_in_kvcache is not None (i.e. sparse attention is enabled)"
|
| 119 |
+
|
| 120 |
+
# Initialize the tile scheduler metadata during the first invocation.
|
| 121 |
+
sched_meta.have_initialized = True
|
| 122 |
+
sched_meta.config = FlashMLASchedMeta.Config(
|
| 123 |
+
q.shape[0],
|
| 124 |
+
q.shape[1],
|
| 125 |
+
q.shape[2],
|
| 126 |
+
k_cache.shape[1],
|
| 127 |
+
k_cache.shape[2],
|
| 128 |
+
|
| 129 |
+
causal,
|
| 130 |
+
is_fp8_kvcache,
|
| 131 |
+
topk,
|
| 132 |
+
|
| 133 |
+
extra_k_page_block_size,
|
| 134 |
+
extra_topk,
|
| 135 |
+
)
|
| 136 |
+
else:
|
| 137 |
+
# Check whether the input arguments are consistent with sched_meta
|
| 138 |
+
helper_msg = " Your input arguments are inconsistent with sched_meta. Please make sure the input arguments are consistent across different invocations of flash_mla_with_kvcache on the same sched_meta."
|
| 139 |
+
assert sched_meta.config is not None
|
| 140 |
+
assert sched_meta.config.b == q.shape[0], "sched_meta.config.b must be equal to batch_size." + helper_msg
|
| 141 |
+
assert sched_meta.config.s_q == q.shape[1], "sched_meta.config.s_q must be equal to seq_len_q." + helper_msg
|
| 142 |
+
assert sched_meta.config.h_q == q.shape[2], "sched_meta.config.h_q must be equal to num_heads_q." + helper_msg
|
| 143 |
+
assert sched_meta.config.page_block_size == k_cache.shape[1], "sched_meta.config.page_block_size must be equal to page_block_size." + helper_msg
|
| 144 |
+
assert sched_meta.config.h_k == k_cache.shape[2], "sched_meta.config.h_k must be equal to num_heads_k." + helper_msg
|
| 145 |
+
assert sched_meta.config.causal == causal, "sched_meta.config.causal must be equal to causal." + helper_msg
|
| 146 |
+
assert sched_meta.config.is_fp8_kvcache == is_fp8_kvcache, "sched_meta.config.is_fp8_kvcache must be equal to is_fp8_kvcache." + helper_msg
|
| 147 |
+
assert sched_meta.config.topk == topk, "sched_meta.config.topk must be equal to the last dim of indices_in_kvcache." + helper_msg
|
| 148 |
+
assert sched_meta.config.extra_page_block_size == extra_k_page_block_size, "sched_meta.config.extra_page_block_size must be equal to the page_block_size of extra_k_cache." + helper_msg
|
| 149 |
+
assert sched_meta.config.extra_topk == extra_topk, "sched_meta.config.extra_topk must be equal to the last dim of extra_indices_in_kvcache." + helper_msg
|
| 150 |
+
|
| 151 |
+
if topk is not None:
|
| 152 |
+
# Sparse attention
|
| 153 |
+
assert not causal, "causal must be False when sparse attention is enabled"
|
| 154 |
+
assert is_fp8_kvcache, "is_fp8_kvcache must be True when sparse attention is enabled"
|
| 155 |
+
out, lse, new_tile_scheduler_metadata, new_num_splits = flash_mla_cuda.sparse_decode_fwd(
|
| 156 |
+
q, k_cache, indices_in_kvcache, topk_length, attn_sink,
|
| 157 |
+
sched_meta.tile_scheduler_metadata, sched_meta.num_splits,
|
| 158 |
+
extra_k_cache, extra_indices_in_kvcache, extra_topk_length,
|
| 159 |
+
head_dim_v, softmax_scale
|
| 160 |
+
)
|
| 161 |
+
else:
|
| 162 |
+
# Dense attention
|
| 163 |
+
assert indices_in_kvcache is None and attn_sink is None and extra_k_cache is None and extra_indices_in_kvcache is None and topk_length is None and extra_topk_length is None, "indices_in_kvcache, attn_sink, extra_k_cache, extra_indices_in_kvcache, topk_length and extra_topk_length must be None when dense attention is used."
|
| 164 |
+
assert block_table is not None and cache_seqlens is not None, "block_table and cache_seqlens must be provided when dense attention is used."
|
| 165 |
+
out, lse, new_tile_scheduler_metadata, new_num_splits = flash_mla_cuda.dense_decode_fwd(
|
| 166 |
+
q, k_cache, head_dim_v,
|
| 167 |
+
cache_seqlens, block_table,
|
| 168 |
+
softmax_scale, causal,
|
| 169 |
+
sched_meta.tile_scheduler_metadata, sched_meta.num_splits
|
| 170 |
+
)
|
| 171 |
+
sched_meta.tile_scheduler_metadata = new_tile_scheduler_metadata
|
| 172 |
+
sched_meta.num_splits = new_num_splits
|
| 173 |
+
return (out, lse)
|
| 174 |
+
|
| 175 |
+
|
| 176 |
+
def flash_mla_sparse_fwd(
|
| 177 |
+
q: torch.Tensor,
|
| 178 |
+
kv: torch.Tensor,
|
| 179 |
+
indices: torch.Tensor,
|
| 180 |
+
sm_scale: float,
|
| 181 |
+
d_v: int = 512,
|
| 182 |
+
attn_sink: Optional[torch.Tensor] = None,
|
| 183 |
+
topk_length: Optional[torch.Tensor] = None,
|
| 184 |
+
) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
|
| 185 |
+
"""
|
| 186 |
+
Sparse attention prefill kernel
|
| 187 |
+
|
| 188 |
+
Args:
|
| 189 |
+
q: [s_q, h_q, d_qk], bfloat16
|
| 190 |
+
kv: [s_kv, h_kv, d_qk], bfloat16
|
| 191 |
+
indices: [s_q, h_kv, topk], int32. Invalid indices should be set to -1 or numbers >= s_kv
|
| 192 |
+
sm_scale: float
|
| 193 |
+
d_v: The dimension of value vectors. Can only be 512
|
| 194 |
+
attn_sink: optional, [h_q], float32.
|
| 195 |
+
If attn_sink is provided, when computing output, output will be additionally multiplied by exp(lse) / (exp(lse) + exp(attn_sink)).
|
| 196 |
+
+-inf in attn_sink will be handled normally (i.e., -inf has no effect, +inf will make corresponding output all zeros).
|
| 197 |
+
This argument has no effect on lse and max_logits.
|
| 198 |
+
topk_length: optional, [s_q], int32. If provided, the i-th q token will only attend to k tokens specified by indices[i, :, :topk_length[i]], ignoring later k/v tokens (even if provided in indices).
|
| 199 |
+
In extremely rare cases (topk_length provided, there is a valid topk index between topk_length[i] ~ s_kv, and that topk index points to a k token containing NaN), operator output will contain NaN, so please avoid this situation.
|
| 200 |
+
|
| 201 |
+
Returns:
|
| 202 |
+
(output, max_logits, lse)
|
| 203 |
+
Please refer to tests/ref.py for the precise definitions of these parameters.
|
| 204 |
+
- output: [s_q, h_q, d_v], bfloat16
|
| 205 |
+
- max_logits: [s_q, h_q], float
|
| 206 |
+
- lse: [s_q, h_q], float, log-sum-exp of attention scores
|
| 207 |
+
"""
|
| 208 |
+
results = flash_mla_cuda.sparse_prefill_fwd(
|
| 209 |
+
q, kv, indices, sm_scale, d_v, attn_sink, topk_length
|
| 210 |
+
)
|
| 211 |
+
return results
|
| 212 |
+
|
| 213 |
+
|
| 214 |
+
def _flash_attn_varlen_forward(
|
| 215 |
+
q: torch.Tensor,
|
| 216 |
+
k: torch.Tensor,
|
| 217 |
+
v: torch.Tensor,
|
| 218 |
+
cu_seqlens_qo: torch.Tensor,
|
| 219 |
+
cu_seqlens_kv: torch.Tensor,
|
| 220 |
+
max_seqlen_qo: int,
|
| 221 |
+
max_seqlen_kv: int,
|
| 222 |
+
out: Optional[torch.Tensor] = None,
|
| 223 |
+
lse: Optional[torch.Tensor] = None,
|
| 224 |
+
causal: bool = False,
|
| 225 |
+
softmax_scale: Optional[float] = None,
|
| 226 |
+
is_varlen: bool = True,
|
| 227 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 228 |
+
qo_total_len, num_qo_heads, head_dim_qk = q.shape
|
| 229 |
+
kv_total_len, num_kv_heads, head_dim_vo = v.shape
|
| 230 |
+
|
| 231 |
+
mask_mode_code = 1 if causal else 0
|
| 232 |
+
if softmax_scale is None:
|
| 233 |
+
softmax_scale = head_dim_qk ** (-0.5)
|
| 234 |
+
|
| 235 |
+
if out is None:
|
| 236 |
+
out = torch.empty(qo_total_len, num_qo_heads, head_dim_vo, device=q.device, dtype=q.dtype)
|
| 237 |
+
if lse is None:
|
| 238 |
+
# Make lse contiguous on seqlen dim
|
| 239 |
+
lse = torch.empty(num_qo_heads, qo_total_len, device=q.device, dtype=torch.float32).T
|
| 240 |
+
|
| 241 |
+
workspace_buffer = torch.empty(32 * 1024 * 1024, dtype=torch.uint8, device=q.device)
|
| 242 |
+
flash_mla_cuda.dense_prefill_fwd(
|
| 243 |
+
workspace_buffer,
|
| 244 |
+
q,
|
| 245 |
+
k,
|
| 246 |
+
v,
|
| 247 |
+
cu_seqlens_qo,
|
| 248 |
+
cu_seqlens_kv,
|
| 249 |
+
out,
|
| 250 |
+
lse,
|
| 251 |
+
mask_mode_code,
|
| 252 |
+
softmax_scale,
|
| 253 |
+
max_seqlen_qo,
|
| 254 |
+
max_seqlen_kv,
|
| 255 |
+
is_varlen,
|
| 256 |
+
)
|
| 257 |
+
|
| 258 |
+
return out, lse
|
| 259 |
+
|
| 260 |
+
|
| 261 |
+
def _flash_attn_varlen_backward(
|
| 262 |
+
do: torch.Tensor,
|
| 263 |
+
q: torch.Tensor,
|
| 264 |
+
k: torch.Tensor,
|
| 265 |
+
v: torch.Tensor,
|
| 266 |
+
out: torch.Tensor,
|
| 267 |
+
lse: torch.Tensor,
|
| 268 |
+
cu_seqlens_qo: torch.Tensor,
|
| 269 |
+
cu_seqlens_kv: torch.Tensor,
|
| 270 |
+
max_seqlen_qo: int,
|
| 271 |
+
max_seqlen_kv: int,
|
| 272 |
+
dq: Optional[torch.Tensor] = None,
|
| 273 |
+
dk: Optional[torch.Tensor] = None,
|
| 274 |
+
dv: Optional[torch.Tensor] = None,
|
| 275 |
+
causal: bool = False,
|
| 276 |
+
softmax_scale: Optional[float] = None,
|
| 277 |
+
is_varlen: bool = True,
|
| 278 |
+
) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
|
| 279 |
+
qo_total_len, num_qo_heads, head_dim_qk = q.shape
|
| 280 |
+
kv_total_len, num_kv_heads, head_dim_vo = v.shape
|
| 281 |
+
|
| 282 |
+
# TODO: fix bwd GQA
|
| 283 |
+
if num_qo_heads != num_kv_heads:
|
| 284 |
+
raise ValueError(f"SM100 bwd doesn't support GQA now. num_qo_heads: {num_qo_heads}, num_kv_heads: {num_kv_heads}.")
|
| 285 |
+
|
| 286 |
+
mask_mode_code = 1 if causal else 0
|
| 287 |
+
if softmax_scale is None:
|
| 288 |
+
softmax_scale = head_dim_qk ** (-0.5)
|
| 289 |
+
|
| 290 |
+
if dq is None:
|
| 291 |
+
dq = torch.empty(qo_total_len, num_qo_heads, head_dim_qk, device=q.device, dtype=q.dtype)
|
| 292 |
+
if dk is None:
|
| 293 |
+
dk = torch.empty(kv_total_len, num_kv_heads, head_dim_qk, device=q.device, dtype=q.dtype)
|
| 294 |
+
if dv is None:
|
| 295 |
+
dv = torch.empty(kv_total_len, num_kv_heads, head_dim_vo, device=q.device, dtype=q.dtype)
|
| 296 |
+
|
| 297 |
+
max_seqlen_qo_aligned = (max_seqlen_qo + 7) // 8 * 8
|
| 298 |
+
bs = cu_seqlens_qo.shape[0] - 1
|
| 299 |
+
workspace_bytes = 0
|
| 300 |
+
workspace_bytes += 4 * bs * max_seqlen_qo_aligned * num_qo_heads * head_dim_qk # dQ_acc
|
| 301 |
+
workspace_bytes += 4 * max_seqlen_qo_aligned * bs * num_qo_heads * 2 # sum_OdO and scaled_lse
|
| 302 |
+
if num_qo_heads != num_kv_heads:
|
| 303 |
+
workspace_bytes += 2 * kv_total_len * num_qo_heads * (head_dim_qk + head_dim_vo) # dKV_acc
|
| 304 |
+
workspace_buffer = torch.empty(workspace_bytes, dtype=torch.uint8, device=q.device)
|
| 305 |
+
flash_mla_cuda.dense_prefill_bwd(
|
| 306 |
+
workspace_buffer,
|
| 307 |
+
do,
|
| 308 |
+
q,
|
| 309 |
+
k,
|
| 310 |
+
v,
|
| 311 |
+
out,
|
| 312 |
+
lse,
|
| 313 |
+
cu_seqlens_qo,
|
| 314 |
+
cu_seqlens_kv,
|
| 315 |
+
dq,
|
| 316 |
+
dk,
|
| 317 |
+
dv,
|
| 318 |
+
mask_mode_code,
|
| 319 |
+
softmax_scale,
|
| 320 |
+
max_seqlen_qo,
|
| 321 |
+
max_seqlen_kv,
|
| 322 |
+
is_varlen,
|
| 323 |
+
)
|
| 324 |
+
|
| 325 |
+
return dq, dk, dv
|
| 326 |
+
|
| 327 |
+
|
| 328 |
+
class FlashAttnVarlenFunc(torch.autograd.Function):
|
| 329 |
+
def forward(
|
| 330 |
+
ctx,
|
| 331 |
+
q: torch.Tensor,
|
| 332 |
+
k: torch.Tensor,
|
| 333 |
+
v: torch.Tensor,
|
| 334 |
+
cu_seqlens_qo: torch.Tensor,
|
| 335 |
+
cu_seqlens_kv: torch.Tensor,
|
| 336 |
+
max_seqlen_qo: int,
|
| 337 |
+
max_seqlen_kv: int,
|
| 338 |
+
causal: bool = False,
|
| 339 |
+
softmax_scale: Optional[float] = None,
|
| 340 |
+
is_varlen: bool = True,
|
| 341 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 342 |
+
out, lse = _flash_attn_varlen_forward(
|
| 343 |
+
q, k, v,
|
| 344 |
+
cu_seqlens_qo, cu_seqlens_kv, max_seqlen_qo, max_seqlen_kv,
|
| 345 |
+
causal=causal, softmax_scale=softmax_scale,
|
| 346 |
+
is_varlen=is_varlen,
|
| 347 |
+
)
|
| 348 |
+
ctx.save_for_backward(q, k, v, out, lse, cu_seqlens_qo, cu_seqlens_kv)
|
| 349 |
+
ctx.max_seqlen_qo = max_seqlen_qo
|
| 350 |
+
ctx.max_seqlen_kv = max_seqlen_kv
|
| 351 |
+
ctx.causal = causal
|
| 352 |
+
ctx.softmax_scale = softmax_scale
|
| 353 |
+
ctx.is_varlen = is_varlen
|
| 354 |
+
return out, lse
|
| 355 |
+
|
| 356 |
+
def backward(
|
| 357 |
+
ctx,
|
| 358 |
+
do: torch.Tensor,
|
| 359 |
+
dlse: torch.Tensor,
|
| 360 |
+
):
|
| 361 |
+
del dlse # LSE doesn't support backward currently
|
| 362 |
+
q, k, v, out, lse, cu_seqlens_qo, cu_seqlens_kv = ctx.saved_tensors
|
| 363 |
+
dq, dk, dv = _flash_attn_varlen_backward(
|
| 364 |
+
do, q, k, v, out, lse,
|
| 365 |
+
cu_seqlens_qo, cu_seqlens_kv, ctx.max_seqlen_qo, ctx.max_seqlen_kv,
|
| 366 |
+
causal=ctx.causal, softmax_scale=ctx.softmax_scale,
|
| 367 |
+
is_varlen=ctx.is_varlen,
|
| 368 |
+
)
|
| 369 |
+
return dq, dk, dv, None, None, None, None, None, None, None
|
| 370 |
+
|
| 371 |
+
|
| 372 |
+
def flash_attn_varlen_func(
|
| 373 |
+
q: torch.Tensor,
|
| 374 |
+
k: torch.Tensor,
|
| 375 |
+
v: torch.Tensor,
|
| 376 |
+
cu_seqlens_qo: torch.Tensor,
|
| 377 |
+
cu_seqlens_kv: torch.Tensor,
|
| 378 |
+
max_seqlen_qo: int,
|
| 379 |
+
max_seqlen_kv: int,
|
| 380 |
+
dropout_p: float = 0.0,
|
| 381 |
+
softmax_scale: Optional[float] = None,
|
| 382 |
+
causal: bool = False,
|
| 383 |
+
deterministic: bool = False,
|
| 384 |
+
is_varlen: bool = True,
|
| 385 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 386 |
+
assert dropout_p == 0.0
|
| 387 |
+
assert not deterministic
|
| 388 |
+
return FlashAttnVarlenFunc.apply(
|
| 389 |
+
q, k, v,
|
| 390 |
+
cu_seqlens_qo, cu_seqlens_kv, max_seqlen_qo, max_seqlen_kv,
|
| 391 |
+
causal, softmax_scale, is_varlen,
|
| 392 |
+
)
|
| 393 |
+
|
| 394 |
+
|
| 395 |
+
def flash_attn_varlen_qkvpacked_func(
|
| 396 |
+
qkv: torch.Tensor,
|
| 397 |
+
cu_seqlens: torch.Tensor,
|
| 398 |
+
max_seqlen: int,
|
| 399 |
+
head_dim_qk: int,
|
| 400 |
+
dropout_p: float = 0.0,
|
| 401 |
+
softmax_scale: Optional[float] = None,
|
| 402 |
+
causal: bool = False,
|
| 403 |
+
deterministic: bool = False,
|
| 404 |
+
is_varlen: bool = True,
|
| 405 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 406 |
+
assert dropout_p == 0.0
|
| 407 |
+
assert not deterministic
|
| 408 |
+
return FlashAttnVarlenFunc.apply(
|
| 409 |
+
qkv[:, :, :head_dim_qk], qkv[:, :, head_dim_qk:head_dim_qk * 2], qkv[:, :, head_dim_qk * 2:],
|
| 410 |
+
cu_seqlens, cu_seqlens, max_seqlen, max_seqlen,
|
| 411 |
+
causal, softmax_scale, is_varlen,
|
| 412 |
+
)
|
| 413 |
+
|
| 414 |
+
|
| 415 |
+
def flash_attn_varlen_kvpacked_func(
|
| 416 |
+
q: torch.Tensor,
|
| 417 |
+
kv: torch.Tensor,
|
| 418 |
+
cu_seqlens_qo: torch.Tensor,
|
| 419 |
+
cu_seqlens_kv: torch.Tensor,
|
| 420 |
+
max_seqlen_qo: int,
|
| 421 |
+
max_seqlen_kv: int,
|
| 422 |
+
head_dim_qk: int,
|
| 423 |
+
dropout_p: float = 0.0,
|
| 424 |
+
softmax_scale: Optional[float] = None,
|
| 425 |
+
causal: bool = False,
|
| 426 |
+
deterministic: bool = False,
|
| 427 |
+
is_varlen: bool = True,
|
| 428 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 429 |
+
assert dropout_p == 0.0
|
| 430 |
+
assert not deterministic
|
| 431 |
+
return FlashAttnVarlenFunc.apply(
|
| 432 |
+
q, kv[:, :, :head_dim_qk], kv[:, :, head_dim_qk:],
|
| 433 |
+
cu_seqlens_qo, cu_seqlens_kv, max_seqlen_qo, max_seqlen_kv,
|
| 434 |
+
causal, softmax_scale, is_varlen,
|
| 435 |
+
)
|
build/torch214-cxx11-cu132-x86_64-linux/metadata.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "flash-mla",
|
| 3 |
+
"id": "_flash_mla_cuda_addf474",
|
| 4 |
+
"version": 1,
|
| 5 |
+
"license": "MIT",
|
| 6 |
+
"python-depends": [],
|
| 7 |
+
"kernel-depends": [],
|
| 8 |
+
"backend": {
|
| 9 |
+
"type": "cuda",
|
| 10 |
+
"archs": [
|
| 11 |
+
"10.0f",
|
| 12 |
+
"9.0a"
|
| 13 |
+
]
|
| 14 |
+
},
|
| 15 |
+
"digest": {
|
| 16 |
+
"algorithm": "sha256",
|
| 17 |
+
"files": {
|
| 18 |
+
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 19 |
+
"_flash_mla_cuda_addf474.abi3.so": "V+4pJTNl+OL9h5ZFcMpHDH2hebq1vga0V2Gwa7205CA=",
|
| 20 |
+
"_ops.py": "127vMzGPzwgnEABQxo12emwqoX29KOApmtNgy+n0QPs=",
|
| 21 |
+
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
+
}
|
| 23 |
+
},
|
| 24 |
+
"provenance": {
|
| 25 |
+
"kernel-builder": {
|
| 26 |
+
"version": "0.17.0-dev0",
|
| 27 |
+
"commit": "081dcd473f8eca27226eef1f9c47c45b86c756b5",
|
| 28 |
+
"dirty": false
|
| 29 |
+
},
|
| 30 |
+
"kernel": {
|
| 31 |
+
"commit": "addf4741fafb55b4c101b15985dfaeea7c7c2f3a",
|
| 32 |
+
"dirty": false
|
| 33 |
+
}
|
| 34 |
+
}
|
| 35 |
+
}
|
build/torch214-cxx11-cu132-x86_64-linux/metadata.json.sigstore
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHSzCCBtCgAwIBAgIUcinjKBpNN2AXtV90qGWLpL/Um58wCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwODI3MDY1MDQ4WhcNMjYwODI3MDcwMDQ4WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV2f2ZQoZ7fp0Tq4rva4e4DBRf5juHlzi3IQfqN4SIm2qGNwCiiDH+E3qIYVS6SXJQ/jMUqUWzQCfHK/16CUcp6OCBe8wggXrMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUGQQ3cFnVUuZZwmnFxWwlSrNIrbIwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoYWRkZjQ3NDFmYWZiNTViNGMxMDFiMTU5ODVkZmFlZWE3YzdjMmYzYTAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKGFkZGY0NzQxZmFmYjU1YjRjMTAxYjE1OTg1ZGZhZWVhN2M3YzJmM2EwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMzMwNDUzODQwMTMvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoEH8TS4AAAQDAEYwRAIgfHk45fI4BRLRyWQcasy9H681gLz3mDv1M/jTWPTbJ0gCIFfWercIe1lR3YgVJ0Wd2xZ/fNvLNVicerkrFrcti5b9MAoGCCqGSM49BAMDA2kAMGYCMQCEjs1AerNXWP3yd20gFrh2QXZpL1srdcHScdn3knT3ZDYZQzs2iYZF0wGxE6WVRNACMQC6XgAAjFl4ZCRKd3zIRtAnCVnpgEqKLan7pDUbZsstqnEZkBm8aKsYuhSFAiNAcOk="}, "tlogEntries":[{"logIndex":"2613808854", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1787813449", "inclusionPromise":{"signedEntryTimestamp":"MEYCIQDMlFOi4VGLoy8XuVLufaom1Xg5zuLA+L9S/RgnaVVWYQIhAN7cB9lnS1T8rkXChfnHF9D+8T+f15/xX08Z/JwyyqSg"}, "inclusionProof":{"logIndex":"2491904592", "rootHash":"Rx8AveY2E1N1L9qa6ufziFhxXW13yxcCC2efamPo3FQ=", "treeSize":"2491904630", "hashes":["yQM/P80x1Sy+tp+K6L+mvOgLhdH3ElVI84X+ngrDN4s=", "lS6Zv0ww1BWU5030JX41i/mmCXboT/HHfNtoWNZaUGg=", "mrQ5y0TVts+I7+Ab+VeMWXyztD0ffTVAEVwCTsqXI8g=", "nH68hYU/ALFMhks2HVwoNYt8hA4XQmZge0srByFGMZE=", "O0a8X2kC/Z5LTpxNL7sdtJ4qeFdseEvAVIDiQ98NYfI=", "r2RSbwA2hLwHpmCD7yyYp2X4UGUhohJz+Wf+ZrQxa0U=", "RpUhiGyZvzBkLEq0a1BsXZ76XY1Crm3/SejN0Ze3Ddo=", "NkrRkqXutxNEeUsHYQDJ1vj2nPzQP8fQBTNzpY7WF8k=", "riGebUJvFYEgCFSvpgso18qqbOHt0UvnZbNnYRA1xgc=", "AQSNk7LiajM2R60yCNOFer58otd41w8EZeNGjIlrmKY=", "2iu6MtbtwIBPWceOVpEntK/ScYeDCwQqeef9T+ZN1rg=", "PxB3thBKvs/N/+byXE6INhKRq76cWuFxeRGfVH2nJIo=", "vdSNqW8JzoTD5q4Kg73sWD1h0oayYiUaSbfeC6nVz18=", "E7AEzQrWJL3fkxC6doP8J8+b69/ILUYXJjzAAPrp8Oo=", "7TfDCaMWgEwSJEZd/e33b24919rF4IDJLmbqNNRNhZs=", "0HfdxDt/zGugZLIuHasrdLEW9s8OaTykSSqBEDFQXdw=", "SndbMKVtcTenAkwi2JBfGzD+mhexp1qJbRIY+A1JRIU=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2491904630\nRx8AveY2E1N1L9qa6ufziFhxXW13yxcCC2efamPo3FQ=\n\n— rekor.sigstore.dev wNI9ajBFAiEA9+N7ke9tBtLqlI6nzenPP2IZTUtoQ+rAhILzTc4SuKECIAqs2AFo7736Il6r1zKk2tbgxsZL1zaPp6gEWQESARBb\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJjYzVlZTYwYzZlYTY1NDJjOGY5MWJmMjgzM2NhMDJiM2I2YjRmYTVmNmY3YmUxYTZlMzViZjYwNWU3Yjk5ZTgxIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUR6NENjTm1RZzlJUUUxZE45STUvc2R1NUl2czJ0YkZoZGh4OFQvLzQ0RU9RSWdLSU80Z0xDaWJzdEc1bkM1U04reGY1allUdjRoczF4cmRyWXphNjF3eTVRPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRla05EUW5SRFowRjNTVUpCWjBsVlkybHVha3RDY0U1T01rRllkRlk1TUhGSFYweHdUQzlWYlRVNGQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlFU1ROTlJGa3hUVVJSTkZkb1kwNU5hbGwzVDBSSk0wMUVZM2ROUkZFMFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZXTW1ZeVdsRnZXamRtY0RCVWNUUnlkbUUwWlRSRVFsSm1OV3AxU0d4NmFUTkpVV1lLY1U0MFUwbHRNbkZIVG5kRGFXbEVTQ3RGTTNGSldWWlRObE5ZU2xFdmFrMVZjVlZYZWxGRFpraExMekUyUTFWamNEWlBRMEpsT0hkbloxaHlUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZIVVZFekNtTkdibFpWZFZwYWQyMXVSbmhYZDJ4VGNrNUpjbUpKZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOVpWMUpyV21wUk0wNUVSbTFaVjFwcFRsUldhVTVIVFhoTlJFWnBDazFVVlRWUFJGWnJXbTFHYkZwWFJUTlplbVJxVFcxWmVsbFVRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMWxYVW10YWFsRXpUa1JHYlZsWFdtbE9WRlpwVGtkTmVFMUVSbWxOVkZVMVQwUldhMXB0Um13S1dsZEZNMWw2WkdwTmJWbDZXVlJCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMWxYVW10YWFsRXpUa1JHYlZsWFdtbE9WRlpwVGtkTmVFMUVSbWtLVFZSVk5VOUVWbXRhYlVac1dsZEZNMWw2WkdwTmJWbDZXVlJCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwZEdhMXBIV1RBS1RucFJlRnB0Um0xWmFsVXhXV3BTYWsxVVFYaFpha1V4VDFSbk1WcEhXbWhhVjFab1RqSk5NMWw2U20xTk1rVjNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOZWsxM1RrUlZlazlFVVhkTlZFMTJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwVVZsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTTjBKSWEwRUtaSGRDTVVGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtOUZTRGhVVXpSQlFVRlJSQXBCUlZsM1VrRkpaMlpJYXpRMVprazBRbEpNVW5sWFVXTmhjM2s1U0RZNE1XZE1lak50UkhZeFRTOXFWRmRRVkdKS01HZERTVVptVjJWeVkwbGxNV3hTQ2pOWloxWktNRmRrTW5oYUwyWk9ka3hPVm1salpYSnJja1p5WTNScE5XSTVUVUZ2UjBORGNVZFRUVFE1UWtGTlJFRXlhMEZOUjFsRFRWRkRSV3B6TVVFS1pYSk9XRmRRTTNsa01qQm5SbkpvTWxGWVduQk1NWE55WkdOSVUyTmtiak5yYmxReldrUlpXbEY2Y3pKcFdWcEdNSGRIZUVVMlYxWlNUa0ZEVFZGRE5ncFlaMEZCYWtac05GcERVa3RrTTNwSlVuUkJia05XYm5CblJYRkxUR0Z1TjNCRVZXSmFjM04wY1c1RldtdENiVGhoUzNOWmRXaFRSa0ZwVGtGalQyczlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg/ijNBHiZfFjb6lkY9Eta0GKjmB+H20G+wiRaWXoTVHkCFQCcelPYiXlj5cZuflfH3YBNI++TURgPMjAyNjA4MjcwNjUwNDlaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDgyNzA2NTA0OVowLwYJKoZIhvcNAQkEMSIEINNdAnwA8zuAkFA9xxgKmWnsFvp/95UCoGY8YJ81AlRPMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMQCsUnv+yuHBQS4ph7WUkShBN1qpFXw9SeVFqRk7trlnx552BEzJwcoC0o8a9SZBM00CMHH/t1R0i0JK6kVFRW9orHVIhaGdodsMkJ+j8lcmWGqXNNGkjQfvP/T6S1HXHiLieA=="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"zF7mDG6mVCyPkb8oM8oCs7a0+l9ve+Gm41v2Bee5noE="}, "signature":"MEUCIQDz4CcNmQg9IQE1dN9I5/sdu5Ivs2tbFhdhx8T//44EOQIgKIO4gLCibstG5nC5SN+xf5jYTv4hs1xrdrYza61wy5Q="}}
|