@runeditrun/rer 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +3 -2
  2. package/cli/README.md +4 -2
  3. package/cli/contract.mjs +2 -2
  4. package/cli/deploy.mjs +17 -3
  5. package/cli/detached-server.mjs +51 -0
  6. package/cli/hosted-output.mjs +2 -2
  7. package/cli/hydration/check.mjs +2 -2
  8. package/cli/inspect.mjs +1 -1
  9. package/cli/main.mjs +1 -0
  10. package/cli/managed-server.mjs +12 -5
  11. package/cli/parse.mjs +3 -2
  12. package/cli/release.mjs +1 -0
  13. package/cli/site-bindings.mjs +291 -0
  14. package/cli/site-browser-objects.mjs +36 -0
  15. package/cli/site-check.mjs +46 -31
  16. package/cli/site-client.mjs +50 -0
  17. package/cli/site-data.mjs +54 -0
  18. package/cli/site-entities.json +1 -0
  19. package/cli/site-input-assets.mjs +58 -0
  20. package/cli/site-inputs.mjs +79 -0
  21. package/cli/site-markup.mjs +102 -0
  22. package/cli/site-private.mjs +36 -0
  23. package/cli/site-references.mjs +93 -0
  24. package/cli/site-render.mjs +7 -5
  25. package/cli/site-syntax.mjs +21 -0
  26. package/cli/site.mjs +32 -11
  27. package/global/CHANGELOG.md +25 -0
  28. package/global/README.md +3 -2
  29. package/global/main.mjs +2 -0
  30. package/global/output.mjs +12 -0
  31. package/global/rer.mjs +3 -0
  32. package/modules/deploy-kit/deploy.mjs +5 -2
  33. package/modules/deploy-kit/diagnostics.mjs +55 -0
  34. package/modules/deploy-kit/owner-cli.mjs +10 -4
  35. package/modules/deploy-kit/owner.mjs +3 -0
  36. package/modules/deploy-kit/provider.mjs +45 -6
  37. package/modules/operator-auth/accounts/native.mjs +1 -1
  38. package/modules/operator-auth/dev/badge.mjs +4 -1
  39. package/modules/operator-auth/index.d.mts +4 -9
  40. package/modules/operator-auth/page.mjs +1 -1
  41. package/modules/operator-auth/service.mjs +1 -0
  42. package/modules/operator-auth/signin/index.d.mts +11 -0
  43. package/modules/operator-auth/signin/index.mjs +10 -7
  44. package/modules/release/README.md +63 -0
  45. package/modules/release/keygen.mjs +18 -0
  46. package/modules/release/produce.mjs +9 -0
  47. package/modules/release/sign.mjs +44 -0
  48. package/modules/release/signature.mjs +336 -0
  49. package/modules/release/signing-cli.mjs +56 -0
  50. package/modules/release/signing-io.mjs +61 -0
  51. package/modules/release/signing-key.mjs +22 -0
  52. package/modules/release/statement.mjs +80 -0
  53. package/modules/release/vectors/generate.mjs +381 -0
  54. package/modules/release/vectors/release-signature-vectors.json +2305 -0
  55. package/modules/release/verify.mjs +27 -0
  56. package/onboarding/production-assets.mjs +23 -0
  57. package/onboarding/production-runtime.mjs +8 -4
  58. package/package.json +2 -1
  59. package/scripts/publish-check/README.md +27 -17
  60. package/scripts/publish-check/content_identities.py +14 -233
  61. package/scripts/publish-check/git_history.py +2 -2
  62. package/scripts/publish-check/gitleaks.toml +1 -1
  63. package/scripts/publish-check/history_scan.py +6 -4
  64. package/scripts/publish-check/hygiene_config.py +3 -1
  65. package/scripts/publish-check/public_hygiene.py +29 -5
  66. package/scripts/publish-check/publication-config.json +3 -1
  67. package/scripts/publish-check/source_metadata.py +62 -0
  68. package/scripts/publish-check/source_shapes.py +91 -0
  69. package/scripts/publish-check/tree_scan.py +2 -2
  70. package/scripts/publish-check/source_hashes.mjs +0 -6
@@ -0,0 +1,2305 @@
1
+ [
2
+ {
3
+ "name": "baseline synthetic signed bundle",
4
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJPeDdmVHB6S1dsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
5
+ "anchors": {
6
+ "schemaVersion": 1,
7
+ "environment": "test",
8
+ "serial": 1,
9
+ "legacyUnsigned": {
10
+ "never-enrolled/app": "0.1.0"
11
+ },
12
+ "keys": [
13
+ {
14
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
15
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
16
+ "publisher": "octocat",
17
+ "githubOwner": {
18
+ "login": "octocat",
19
+ "id": 583231
20
+ },
21
+ "notBefore": "2026-10-01T00:00:00Z",
22
+ "notAfter": "2028-10-01T00:00:00Z",
23
+ "status": "active",
24
+ "enrolment": {
25
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
26
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
27
+ "signatures": [
28
+ {
29
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
30
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
31
+ }
32
+ ]
33
+ },
34
+ "review": "public conformance vector"
35
+ }
36
+ ]
37
+ },
38
+ "context": {
39
+ "environment": "test",
40
+ "now": 1791849600000,
41
+ "expect": {
42
+ "project": "octocat/hello-world",
43
+ "repository": "https://github.com/octocat/hello-world",
44
+ "tag": "v1.1.0",
45
+ "publicCommit": "1111111111111111111111111111111111111111",
46
+ "publicTree": "2222222222222222222222222222222222222222",
47
+ "tagObject": "3333333333333333333333333333333333333333"
48
+ },
49
+ "files": {
50
+ "public-source.tar": "dGFyCg==",
51
+ "release-receipt.json": "eyJzdGF0dXMiOiJSRUxFQVNFRCJ9Cg==",
52
+ "publish-check.json": "eyJzdGF0dXMiOiJQQVNTIn0K",
53
+ "site/hello-world/1.1.0/release.json": "eyJpZCI6ImhlbGxvLXdvcmxkIiwidmVyc2lvbiI6IjEuMS4wIn0K",
54
+ "site/hello-world/1.1.0/documents/CONTRACT.md": "UHVibGljIGNvbnRyYWN0Lgo="
55
+ }
56
+ },
57
+ "expected": "VERIFIED"
58
+ },
59
+ {
60
+ "name": "signed document path contains printable ASCII punctuation and space",
61
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDJSdlkzVnRaVzUwY3k5d2NtbGpaU0FySUhSbGNtMXpKUzV0WkNJc0luTm9ZVEkxTmlJNklqazBNbUZpWmprMU9HRTRNelkxTmpKbU1EaGxOak0yTVdRMFltVmpNVEpoTmpNeE1tTTVaR1F5TWpOaE5XUmhNbVJrWWpKbU9EZzRaRFpsTnpWbE5XRWlMQ0p6YVhwbElqb3lOSDBzZXlKd1lYUm9Jam9pYzJsMFpTOW9aV3hzYnkxM2IzSnNaQzh4TGpFdU1DOXlaV3hsWVhObExtcHpiMjRpTENKemFHRXlOVFlpT2lJNE56QTNZVGszT1RZMlkyWTVZek5tWXpBeU5tWTJZbVZpTm1OaE1tRTJPR1ZsTURWbVpEQXhOamd4TXpobE1XRmxZV1JtTVdRNFptWmlPV1F6WTJVeUlpd2ljMmw2WlNJNk16bDlYU3dpYVhOemRXVmtRWFFpT2lJeU1ESTJMVEV3TFRFelZEQXdPakF3T2pBd1dpSXNJbXRsZVVsa0lqb2lkR1Z6ZEMxbFpESTFOVEU1TFdVNU16Qm1NREl4TkRRME9HRTVOell3WVdaak9HSmtORFl6WkRaa00yTTFJaXdpY0hKdmFtVmpkQ0k2SW05amRHOWpZWFF2YUdWc2JHOHRkMjl5YkdRaUxDSndkV0pzYVdORGIyMXRhWFFpT2lJeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhJaXdpY0hWaWJHbGpWSEpsWlNJNklqSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNaklpTENKd2RXSnNhWE5vWlhJaU9pSnZZM1J2WTJGMElpd2ljbVZ3YjNOcGRHOXllU0k2SW1oMGRIQnpPaTh2WjJsMGFIVmlMbU52YlM5dlkzUnZZMkYwTDJobGJHeHZMWGR2Y214a0lpd2ljMk5vWlcxaFZtVnljMmx2YmlJNk1Td2lkR0ZuSWpvaWRqRXVNUzR3SWl3aWRHRm5UMkpxWldOMElqb2lNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXlJc0luWmxjbk5wYjI0aU9pSXhMakV1TUNKOSIsInNpZ25hdHVyZXMiOlt7ImtleWlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwic2lnIjoiV0RIVEI2RlkvUzR1cVFrSFdjbFVoNHFoSHpkRnFHcXJyVkR5d3NCMExOSWhXS2JjakYzQVlXVmx2ZDExSlNGNk5NbXltcm1MR2loK0xEVllZWjlpQmc9PSJ9XX0=",
62
+ "anchors": {
63
+ "schemaVersion": 1,
64
+ "environment": "test",
65
+ "serial": 1,
66
+ "legacyUnsigned": {
67
+ "never-enrolled/app": "0.1.0"
68
+ },
69
+ "keys": [
70
+ {
71
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
72
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
73
+ "publisher": "octocat",
74
+ "githubOwner": {
75
+ "login": "octocat",
76
+ "id": 583231
77
+ },
78
+ "notBefore": "2026-10-01T00:00:00Z",
79
+ "notAfter": "2028-10-01T00:00:00Z",
80
+ "status": "active",
81
+ "enrolment": {
82
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
83
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
84
+ "signatures": [
85
+ {
86
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
87
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
88
+ }
89
+ ]
90
+ },
91
+ "review": "public conformance vector"
92
+ }
93
+ ]
94
+ },
95
+ "context": {
96
+ "environment": "test",
97
+ "now": 1791849600000,
98
+ "expect": {
99
+ "project": "octocat/hello-world",
100
+ "repository": "https://github.com/octocat/hello-world",
101
+ "tag": "v1.1.0",
102
+ "publicCommit": "1111111111111111111111111111111111111111",
103
+ "publicTree": "2222222222222222222222222222222222222222",
104
+ "tagObject": "3333333333333333333333333333333333333333"
105
+ },
106
+ "files": {
107
+ "public-source.tar": "dGFyCg==",
108
+ "release-receipt.json": "eyJzdGF0dXMiOiJSRUxFQVNFRCJ9Cg==",
109
+ "publish-check.json": "eyJzdGF0dXMiOiJQQVNTIn0K",
110
+ "site/hello-world/1.1.0/release.json": "eyJpZCI6ImhlbGxvLXdvcmxkIiwidmVyc2lvbiI6IjEuMS4wIn0K",
111
+ "site/hello-world/1.1.0/documents/CONTRACT.md": "UHVibGljIGNvbnRyYWN0Lgo=",
112
+ "site/hello-world/1.1.0/documents/price + terms%.md": "UHVibGljIHByaWNlIGFuZCB0ZXJtcy4K"
113
+ }
114
+ },
115
+ "expected": "VERIFIED"
116
+ },
117
+ {
118
+ "name": "uppercase project and signed unsigned-through floor",
119
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOUlaV3hzYnkxWGIzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJETUNSVDNPME5WWTNzbnl5a2dOc0hBdkV1SmlucFNKQUNndkRJQmt2dlhqa25EcUxrTDlBQnJTdWVTaVpOTlQ1UjlKMVpxQ2I2Z2xPQk1BSUdVVmlCUT09In1dfQ==",
120
+ "anchors": {
121
+ "schemaVersion": 1,
122
+ "environment": "test",
123
+ "serial": 1,
124
+ "legacyUnsigned": {
125
+ "never-enrolled/app": "0.1.0"
126
+ },
127
+ "keys": [
128
+ {
129
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
130
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
131
+ "publisher": "octocat",
132
+ "githubOwner": {
133
+ "login": "octocat",
134
+ "id": 583231
135
+ },
136
+ "notBefore": "2026-10-01T00:00:00Z",
137
+ "notAfter": "2028-10-01T00:00:00Z",
138
+ "status": "active",
139
+ "enrolment": {
140
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
141
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvSGVsbG8tV29ybGQiOiIxLjEuMCJ9fQ==",
142
+ "signatures": [
143
+ {
144
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
145
+ "sig": "Ub0WhukgdjFlX+pkctgcBOwr96/vTOAoNBYI+co2+PqbKMmTIWrty0cdSwviRGqJbwAVkuRky8EVLCRPHWAODg=="
146
+ }
147
+ ]
148
+ },
149
+ "review": "public conformance vector"
150
+ }
151
+ ]
152
+ },
153
+ "context": {
154
+ "environment": "test",
155
+ "now": 1791849600000,
156
+ "expect": {
157
+ "project": "octocat/Hello-World",
158
+ "repository": "https://github.com/octocat/hello-world",
159
+ "tag": "v1.1.0",
160
+ "publicCommit": "1111111111111111111111111111111111111111",
161
+ "publicTree": "2222222222222222222222222222222222222222",
162
+ "tagObject": "3333333333333333333333333333333333333333"
163
+ },
164
+ "files": {
165
+ "public-source.tar": "dGFyCg==",
166
+ "release-receipt.json": "eyJzdGF0dXMiOiJSRUxFQVNFRCJ9Cg==",
167
+ "publish-check.json": "eyJzdGF0dXMiOiJQQVNTIn0K",
168
+ "site/hello-world/1.1.0/release.json": "eyJpZCI6ImhlbGxvLXdvcmxkIiwidmVyc2lvbiI6IjEuMS4wIn0K",
169
+ "site/hello-world/1.1.0/documents/CONTRACT.md": "UHVibGljIGNvbnRyYWN0Lgo="
170
+ }
171
+ },
172
+ "expected": "VERIFIED"
173
+ },
174
+ {
175
+ "name": "flipped document digest",
176
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJPeDdmVHB6S1dsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
177
+ "anchors": {
178
+ "schemaVersion": 1,
179
+ "environment": "test",
180
+ "serial": 1,
181
+ "legacyUnsigned": {
182
+ "never-enrolled/app": "0.1.0"
183
+ },
184
+ "keys": [
185
+ {
186
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
187
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
188
+ "publisher": "octocat",
189
+ "githubOwner": {
190
+ "login": "octocat",
191
+ "id": 583231
192
+ },
193
+ "notBefore": "2026-10-01T00:00:00Z",
194
+ "notAfter": "2028-10-01T00:00:00Z",
195
+ "status": "active",
196
+ "enrolment": {
197
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
198
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
199
+ "signatures": [
200
+ {
201
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
202
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
203
+ }
204
+ ]
205
+ },
206
+ "review": "public conformance vector"
207
+ }
208
+ ]
209
+ },
210
+ "context": {
211
+ "environment": "test",
212
+ "now": 1791849600000,
213
+ "expect": {
214
+ "project": "octocat/hello-world",
215
+ "repository": "https://github.com/octocat/hello-world",
216
+ "tag": "v1.1.0",
217
+ "publicCommit": "1111111111111111111111111111111111111111",
218
+ "publicTree": "2222222222222222222222222222222222222222",
219
+ "tagObject": "3333333333333333333333333333333333333333"
220
+ },
221
+ "files": {
222
+ "public-source.tar": "dGFyCg==",
223
+ "release-receipt.json": "eyJzdGF0dXMiOiJSRUxFQVNFRCJ9Cg==",
224
+ "publish-check.json": "eyJzdGF0dXMiOiJQQVNTIn0K",
225
+ "site/hello-world/1.1.0/release.json": "eyJpZCI6ImhlbGxvLXdvcmxkIiwidmVyc2lvbiI6IjEuMS4wIn0K",
226
+ "site/hello-world/1.1.0/documents/CONTRACT.md": "UXVibGljIGNvbnRyYWN0Lgo="
227
+ }
228
+ },
229
+ "expected": "DIGEST_MISMATCH"
230
+ },
231
+ {
232
+ "name": "flipped release.json digest",
233
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJPeDdmVHB6S1dsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
234
+ "anchors": {
235
+ "schemaVersion": 1,
236
+ "environment": "test",
237
+ "serial": 1,
238
+ "legacyUnsigned": {
239
+ "never-enrolled/app": "0.1.0"
240
+ },
241
+ "keys": [
242
+ {
243
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
244
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
245
+ "publisher": "octocat",
246
+ "githubOwner": {
247
+ "login": "octocat",
248
+ "id": 583231
249
+ },
250
+ "notBefore": "2026-10-01T00:00:00Z",
251
+ "notAfter": "2028-10-01T00:00:00Z",
252
+ "status": "active",
253
+ "enrolment": {
254
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
255
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
256
+ "signatures": [
257
+ {
258
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
259
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
260
+ }
261
+ ]
262
+ },
263
+ "review": "public conformance vector"
264
+ }
265
+ ]
266
+ },
267
+ "context": {
268
+ "environment": "test",
269
+ "now": 1791849600000,
270
+ "expect": {
271
+ "project": "octocat/hello-world",
272
+ "repository": "https://github.com/octocat/hello-world",
273
+ "tag": "v1.1.0",
274
+ "publicCommit": "1111111111111111111111111111111111111111",
275
+ "publicTree": "2222222222222222222222222222222222222222",
276
+ "tagObject": "3333333333333333333333333333333333333333"
277
+ },
278
+ "files": {
279
+ "public-source.tar": "dGFyCg==",
280
+ "release-receipt.json": "eyJzdGF0dXMiOiJSRUxFQVNFRCJ9Cg==",
281
+ "publish-check.json": "eyJzdGF0dXMiOiJQQVNTIn0K",
282
+ "site/hello-world/1.1.0/release.json": "eiJpZCI6ImhlbGxvLXdvcmxkIiwidmVyc2lvbiI6IjEuMS4wIn0K",
283
+ "site/hello-world/1.1.0/documents/CONTRACT.md": "UHVibGljIGNvbnRyYWN0Lgo="
284
+ }
285
+ },
286
+ "expected": "DIGEST_MISMATCH"
287
+ },
288
+ {
289
+ "name": "flipped public source archive digest",
290
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJPeDdmVHB6S1dsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
291
+ "anchors": {
292
+ "schemaVersion": 1,
293
+ "environment": "test",
294
+ "serial": 1,
295
+ "legacyUnsigned": {
296
+ "never-enrolled/app": "0.1.0"
297
+ },
298
+ "keys": [
299
+ {
300
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
301
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
302
+ "publisher": "octocat",
303
+ "githubOwner": {
304
+ "login": "octocat",
305
+ "id": 583231
306
+ },
307
+ "notBefore": "2026-10-01T00:00:00Z",
308
+ "notAfter": "2028-10-01T00:00:00Z",
309
+ "status": "active",
310
+ "enrolment": {
311
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
312
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
313
+ "signatures": [
314
+ {
315
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
316
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
317
+ }
318
+ ]
319
+ },
320
+ "review": "public conformance vector"
321
+ }
322
+ ]
323
+ },
324
+ "context": {
325
+ "environment": "test",
326
+ "now": 1791849600000,
327
+ "expect": {
328
+ "project": "octocat/hello-world",
329
+ "repository": "https://github.com/octocat/hello-world",
330
+ "tag": "v1.1.0",
331
+ "publicCommit": "1111111111111111111111111111111111111111",
332
+ "publicTree": "2222222222222222222222222222222222222222",
333
+ "tagObject": "3333333333333333333333333333333333333333"
334
+ },
335
+ "files": {
336
+ "public-source.tar": "dWFyCg==",
337
+ "release-receipt.json": "eyJzdGF0dXMiOiJSRUxFQVNFRCJ9Cg==",
338
+ "publish-check.json": "eyJzdGF0dXMiOiJQQVNTIn0K",
339
+ "site/hello-world/1.1.0/release.json": "eyJpZCI6ImhlbGxvLXdvcmxkIiwidmVyc2lvbiI6IjEuMS4wIn0K",
340
+ "site/hello-world/1.1.0/documents/CONTRACT.md": "UHVibGljIGNvbnRyYWN0Lgo="
341
+ }
342
+ },
343
+ "expected": "DIGEST_MISMATCH"
344
+ },
345
+ {
346
+ "name": "changed payload with original signature",
347
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMybGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJPeDdmVHB6S1dsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
348
+ "anchors": {
349
+ "schemaVersion": 1,
350
+ "environment": "test",
351
+ "serial": 1,
352
+ "legacyUnsigned": {
353
+ "never-enrolled/app": "0.1.0"
354
+ },
355
+ "keys": [
356
+ {
357
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
358
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
359
+ "publisher": "octocat",
360
+ "githubOwner": {
361
+ "login": "octocat",
362
+ "id": 583231
363
+ },
364
+ "notBefore": "2026-10-01T00:00:00Z",
365
+ "notAfter": "2028-10-01T00:00:00Z",
366
+ "status": "active",
367
+ "enrolment": {
368
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
369
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
370
+ "signatures": [
371
+ {
372
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
373
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
374
+ }
375
+ ]
376
+ },
377
+ "review": "public conformance vector"
378
+ }
379
+ ]
380
+ },
381
+ "context": {
382
+ "environment": "test",
383
+ "now": 1791849600000,
384
+ "expect": {
385
+ "project": "octocat/hello-world",
386
+ "repository": "https://github.com/octocat/hello-world",
387
+ "tag": "v1.1.0",
388
+ "publicCommit": "1111111111111111111111111111111111111111",
389
+ "publicTree": "2222222222222222222222222222222222222222",
390
+ "tagObject": "3333333333333333333333333333333333333333"
391
+ }
392
+ },
393
+ "expected": "SIGNATURE_INVALID"
394
+ },
395
+ {
396
+ "name": "changed signature bit",
397
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJPeDdmVHB6TFdsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
398
+ "anchors": {
399
+ "schemaVersion": 1,
400
+ "environment": "test",
401
+ "serial": 1,
402
+ "legacyUnsigned": {
403
+ "never-enrolled/app": "0.1.0"
404
+ },
405
+ "keys": [
406
+ {
407
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
408
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
409
+ "publisher": "octocat",
410
+ "githubOwner": {
411
+ "login": "octocat",
412
+ "id": 583231
413
+ },
414
+ "notBefore": "2026-10-01T00:00:00Z",
415
+ "notAfter": "2028-10-01T00:00:00Z",
416
+ "status": "active",
417
+ "enrolment": {
418
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
419
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
420
+ "signatures": [
421
+ {
422
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
423
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
424
+ }
425
+ ]
426
+ },
427
+ "review": "public conformance vector"
428
+ }
429
+ ]
430
+ },
431
+ "context": {
432
+ "environment": "test",
433
+ "now": 1791849600000,
434
+ "expect": {
435
+ "project": "octocat/hello-world",
436
+ "repository": "https://github.com/octocat/hello-world",
437
+ "tag": "v1.1.0",
438
+ "publicCommit": "1111111111111111111111111111111111111111",
439
+ "publicTree": "2222222222222222222222222222222222222222",
440
+ "tagObject": "3333333333333333333333333333333333333333"
441
+ }
442
+ },
443
+ "expected": "SIGNATURE_INVALID"
444
+ },
445
+ {
446
+ "name": "changed statement keyId without resigning",
447
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RPRE16WkdNNU5XVTBObUUyT0RZeVpXSTJNRGRsTjJGaVl6TXdNVGhrTTJFaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJPeDdmVHB6S1dsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
448
+ "anchors": {
449
+ "schemaVersion": 1,
450
+ "environment": "test",
451
+ "serial": 1,
452
+ "legacyUnsigned": {
453
+ "never-enrolled/app": "0.1.0"
454
+ },
455
+ "keys": [
456
+ {
457
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
458
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
459
+ "publisher": "octocat",
460
+ "githubOwner": {
461
+ "login": "octocat",
462
+ "id": 583231
463
+ },
464
+ "notBefore": "2026-10-01T00:00:00Z",
465
+ "notAfter": "2028-10-01T00:00:00Z",
466
+ "status": "active",
467
+ "enrolment": {
468
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
469
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
470
+ "signatures": [
471
+ {
472
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
473
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
474
+ }
475
+ ]
476
+ },
477
+ "review": "public conformance vector"
478
+ }
479
+ ]
480
+ },
481
+ "context": {
482
+ "environment": "test",
483
+ "now": 1791849600000,
484
+ "expect": {
485
+ "project": "octocat/hello-world",
486
+ "repository": "https://github.com/octocat/hello-world",
487
+ "tag": "v1.1.0",
488
+ "publicCommit": "1111111111111111111111111111111111111111",
489
+ "publicTree": "2222222222222222222222222222222222222222",
490
+ "tagObject": "3333333333333333333333333333333333333333"
491
+ }
492
+ },
493
+ "expected": "SIGNATURE_INVALID"
494
+ },
495
+ {
496
+ "name": "changed envelope keyId to an unenrolled id",
497
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzAiLCJzaWciOiJPeDdmVHB6S1dsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
498
+ "anchors": {
499
+ "schemaVersion": 1,
500
+ "environment": "test",
501
+ "serial": 1,
502
+ "legacyUnsigned": {
503
+ "never-enrolled/app": "0.1.0"
504
+ },
505
+ "keys": [
506
+ {
507
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
508
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
509
+ "publisher": "octocat",
510
+ "githubOwner": {
511
+ "login": "octocat",
512
+ "id": 583231
513
+ },
514
+ "notBefore": "2026-10-01T00:00:00Z",
515
+ "notAfter": "2028-10-01T00:00:00Z",
516
+ "status": "active",
517
+ "enrolment": {
518
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
519
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
520
+ "signatures": [
521
+ {
522
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
523
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
524
+ }
525
+ ]
526
+ },
527
+ "review": "public conformance vector"
528
+ }
529
+ ]
530
+ },
531
+ "context": {
532
+ "environment": "test",
533
+ "now": 1791849600000,
534
+ "expect": {
535
+ "project": "octocat/hello-world",
536
+ "repository": "https://github.com/octocat/hello-world",
537
+ "tag": "v1.1.0",
538
+ "publicCommit": "1111111111111111111111111111111111111111",
539
+ "publicTree": "2222222222222222222222222222222222222222",
540
+ "tagObject": "3333333333333333333333333333333333333333"
541
+ }
542
+ },
543
+ "expected": "KEY_UNKNOWN"
544
+ },
545
+ {
546
+ "name": "validly signed by an unenrolled key",
547
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3ROVFU0TnpFNE9XVmtZVEF6WVdJMk4yTmhZbUV4TUdSaU9UTm1NakV6TkdNaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktNTU4NzE4OWVkYTAzYWI2N2NhYmExMGRiOTNmMjEzNGMiLCJzaWciOiJmaENMQTFFNDVLZ2U0R3ZycE1qaU8xU21aS0JhT3UrQVZCTHVXdUFmNFNlQ0ZpVmZFSmVBdFowb1Q1VEJwRS9yMEs3OHRzZG52U29ZNERlVGlLVjBBUT09In1dfQ==",
548
+ "anchors": {
549
+ "schemaVersion": 1,
550
+ "environment": "test",
551
+ "serial": 1,
552
+ "legacyUnsigned": {
553
+ "never-enrolled/app": "0.1.0"
554
+ },
555
+ "keys": [
556
+ {
557
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
558
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
559
+ "publisher": "octocat",
560
+ "githubOwner": {
561
+ "login": "octocat",
562
+ "id": 583231
563
+ },
564
+ "notBefore": "2026-10-01T00:00:00Z",
565
+ "notAfter": "2028-10-01T00:00:00Z",
566
+ "status": "active",
567
+ "enrolment": {
568
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
569
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
570
+ "signatures": [
571
+ {
572
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
573
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
574
+ }
575
+ ]
576
+ },
577
+ "review": "public conformance vector"
578
+ }
579
+ ]
580
+ },
581
+ "context": {
582
+ "environment": "test",
583
+ "now": 1791849600000,
584
+ "expect": {
585
+ "project": "octocat/hello-world",
586
+ "repository": "https://github.com/octocat/hello-world",
587
+ "tag": "v1.1.0",
588
+ "publicCommit": "1111111111111111111111111111111111111111",
589
+ "publicTree": "2222222222222222222222222222222222222222",
590
+ "tagObject": "3333333333333333333333333333333333333333"
591
+ }
592
+ },
593
+ "expected": "KEY_UNKNOWN"
594
+ },
595
+ {
596
+ "name": "re-signed by another enrolled publisher",
597
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3ROMlEyTmpFelltRmtZekk1WWpVNFpEbGhNRFl6WmpBMk9XRTRNMkl3T0RVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktN2Q2NjEzYmFkYzI5YjU4ZDlhMDYzZjA2OWE4M2IwODUiLCJzaWciOiJxMXp6MThOcnJNRlBzWTlETjdVUE5GN0Y2RmFqVnlGcTB4a25GSXQxcnVIUHNUam5mTWMzOHVtR1RiN3orY3plYWRBY1FUa3VPYmhqSENVK04wajlEQT09In1dfQ==",
598
+ "anchors": {
599
+ "schemaVersion": 1,
600
+ "environment": "test",
601
+ "serial": 1,
602
+ "legacyUnsigned": {
603
+ "never-enrolled/app": "0.1.0"
604
+ },
605
+ "keys": [
606
+ {
607
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
608
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
609
+ "publisher": "octocat",
610
+ "githubOwner": {
611
+ "login": "octocat",
612
+ "id": 583231
613
+ },
614
+ "notBefore": "2026-10-01T00:00:00Z",
615
+ "notAfter": "2028-10-01T00:00:00Z",
616
+ "status": "active",
617
+ "enrolment": {
618
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
619
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
620
+ "signatures": [
621
+ {
622
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
623
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
624
+ }
625
+ ]
626
+ },
627
+ "review": "public conformance vector"
628
+ },
629
+ {
630
+ "keyId": "test-ed25519-7d6613badc29b58d9a063f069a83b085",
631
+ "publicKey": "oyVhvay75Y5/fu/iBKed7KMTa92sKCQcwF5FolUPv1I=",
632
+ "publisher": "other-pub",
633
+ "githubOwner": {
634
+ "login": "other-pub",
635
+ "id": 71002
636
+ },
637
+ "notBefore": "2026-10-01T00:00:00Z",
638
+ "notAfter": "2028-10-01T00:00:00Z",
639
+ "status": "active",
640
+ "enrolment": {
641
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
642
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NzEwMDIsImxvZ2luIjoib3RoZXItcHViIn0sImlzc3VlZEF0IjoiMjAyNi0xMC0wMVQwMDowMDowMFoiLCJrZXlJZCI6InRlc3QtZWQyNTUxOS03ZDY2MTNiYWRjMjliNThkOWEwNjNmMDY5YTgzYjA4NSIsIm5vdEFmdGVyIjoiMjAyOC0xMC0wMVQwMDowMDowMFoiLCJub3RCZWZvcmUiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsInB1YmxpY0tleSI6Im95Vmh2YXk3NVk1L2Z1L2lCS2VkN0tNVGE5MnNLQ1Fjd0Y1Rm9sVVB2MUk9IiwicHVibGlzaGVyIjoib3RoZXItcHViIiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7fX0=",
643
+ "signatures": [
644
+ {
645
+ "keyid": "test-ed25519-7d6613badc29b58d9a063f069a83b085",
646
+ "sig": "+vOShsQMPsC4LaStc8G8e1YmsAclOcekUtFYCTRiusyvW5CeoeSg3OLYFrTaShsZ+PwL3oghLvguXihR3QhHDA=="
647
+ }
648
+ ]
649
+ },
650
+ "review": "public conformance vector"
651
+ }
652
+ ]
653
+ },
654
+ "context": {
655
+ "environment": "test",
656
+ "now": 1791849600000,
657
+ "expect": {
658
+ "project": "octocat/hello-world",
659
+ "repository": "https://github.com/octocat/hello-world",
660
+ "tag": "v1.1.0",
661
+ "publicCommit": "1111111111111111111111111111111111111111",
662
+ "publicTree": "2222222222222222222222222222222222222222",
663
+ "tagObject": "3333333333333333333333333333333333333333"
664
+ }
665
+ },
666
+ "expected": "PUBLISHER_MISMATCH"
667
+ },
668
+ {
669
+ "name": "reordered statement keys",
670
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKMlpYSnphVzl1SWpvaU1TNHhMakFpTENKMFlXZFBZbXBsWTNRaU9pSXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16SWl3aWRHRm5Jam9pZGpFdU1TNHdJaXdpYzJOb1pXMWhWbVZ5YzJsdmJpSTZNU3dpY21Wd2IzTnBkRzl5ZVNJNkltaDBkSEJ6T2k4dloybDBhSFZpTG1OdmJTOXZZM1J2WTJGMEwyaGxiR3h2TFhkdmNteGtJaXdpY0hWaWJHbHphR1Z5SWpvaWIyTjBiMk5oZENJc0luQjFZbXhwWTFSeVpXVWlPaUl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeUlpd2ljSFZpYkdsalEyOXRiV2wwSWpvaU1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNU0lzSW5CeWIycGxZM1FpT2lKdlkzUnZZMkYwTDJobGJHeHZMWGR2Y214a0lpd2lhMlY1U1dRaU9pSjBaWE4wTFdWa01qVTFNVGt0WlRrek1HWXdNakUwTkRRNFlUazNOakJoWm1NNFltUTBOak5rTm1Rell6VWlMQ0pwYzNOMVpXUkJkQ0k2SWpJd01qWXRNVEF0TVROVU1EQTZNREE2TURCYUlpd2labWxzWlhNaU9sdDdJbkJoZEdnaU9pSndkV0pzYVdNdGMyOTFjbU5sTG5SaGNpSXNJbk5vWVRJMU5pSTZJbU5tTldZeU0yWTRZelUwTVRKbVlXTTBOR1kzTkRrMlptWTJZMk13WWpnNU9XTTFZakkyTW1VeE5USXlaRFF3T0Roall6ZzJOekl6TmpJNE56bGlPRE1pTENKemFYcGxJam8wZlN4N0luQmhkR2dpT2lKd2RXSnNhWE5vTFdOb1pXTnJMbXB6YjI0aUxDSnphR0V5TlRZaU9pSTBNak5pTUdFNU5EVmhOek5sWTJJMVlXSTNORGhqTjJNM09UWmhaamt6TWpoaE5EWXpPV0ptTmpreU1XRm1PVGd5WlRjeFlXUXdNRGt5TkdZME5tVTVJaXdpYzJsNlpTSTZNVGg5TEhzaWNHRjBhQ0k2SW5KbGJHVmhjMlV0Y21WalpXbHdkQzVxYzI5dUlpd2ljMmhoTWpVMklqb2lNMlJqTnpNMk5EYzFPR0V4TkdVMk1EazJNMlUwWW1VNE1qZzBNMkZsT0RCaU1EUTNaREkzTlRVM01UYzNaak0zT0dJNVl6Rm1abVJqTnpFMVltWTFZeUlzSW5OcGVtVWlPakl5ZlN4N0luQmhkR2dpT2lKemFYUmxMMmhsYkd4dkxYZHZjbXhrTHpFdU1TNHdMMlJ2WTNWdFpXNTBjeTlEVDA1VVVrRkRWQzV0WkNJc0luTm9ZVEkxTmlJNklqQTFabUZrWVRRd1lUazNOVEUzWVRNeU5UWmtaalpqTldJeFlUVmxaV1l5TmpFMU5UWTFPR05pWW1JM1kySTROalJpTWprM09UVm1NVGc0WTJaa01qUWlMQ0p6YVhwbElqb3hOMzBzZXlKd1lYUm9Jam9pYzJsMFpTOW9aV3hzYnkxM2IzSnNaQzh4TGpFdU1DOXlaV3hsWVhObExtcHpiMjRpTENKemFHRXlOVFlpT2lJNE56QTNZVGszT1RZMlkyWTVZek5tWXpBeU5tWTJZbVZpTm1OaE1tRTJPR1ZsTURWbVpEQXhOamd4TXpobE1XRmxZV1JtTVdRNFptWmlPV1F6WTJVeUlpd2ljMmw2WlNJNk16bDlYWDA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiI4QldhN3JrVTJzcGk5K1ZKNHJSRDZCKzUwcnVRWTBWNTZZd2ZHOW5INDFiZkVtZTAzNXJXWnlwVUlwdDVCb2RwMnpQTDVoN1dURkh4OWtjR0lGQ09BZz09In1dfQ==",
671
+ "anchors": {
672
+ "schemaVersion": 1,
673
+ "environment": "test",
674
+ "serial": 1,
675
+ "legacyUnsigned": {
676
+ "never-enrolled/app": "0.1.0"
677
+ },
678
+ "keys": [
679
+ {
680
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
681
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
682
+ "publisher": "octocat",
683
+ "githubOwner": {
684
+ "login": "octocat",
685
+ "id": 583231
686
+ },
687
+ "notBefore": "2026-10-01T00:00:00Z",
688
+ "notAfter": "2028-10-01T00:00:00Z",
689
+ "status": "active",
690
+ "enrolment": {
691
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
692
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
693
+ "signatures": [
694
+ {
695
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
696
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
697
+ }
698
+ ]
699
+ },
700
+ "review": "public conformance vector"
701
+ }
702
+ ]
703
+ },
704
+ "context": {
705
+ "environment": "test",
706
+ "now": 1791849600000,
707
+ "expect": {
708
+ "project": "octocat/hello-world",
709
+ "repository": "https://github.com/octocat/hello-world",
710
+ "tag": "v1.1.0",
711
+ "publicCommit": "1111111111111111111111111111111111111111",
712
+ "publicTree": "2222222222222222222222222222222222222222",
713
+ "tagObject": "3333333333333333333333333333333333333333"
714
+ }
715
+ },
716
+ "expected": "STATEMENT_NOT_CANONICAL"
717
+ },
718
+ {
719
+ "name": "escaped ASCII string",
720
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOWNkVEF3TmpobGJHeHZMWGR2Y214a0lpd2ljSFZpYkdsalEyOXRiV2wwSWpvaU1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNU0lzSW5CMVlteHBZMVJ5WldVaU9pSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5SWl3aWNIVmliR2x6YUdWeUlqb2liMk4wYjJOaGRDSXNJbkpsY0c5emFYUnZjbmtpT2lKb2RIUndjem92TDJkcGRHaDFZaTVqYjIwdmIyTjBiMk5oZEM5b1pXeHNieTEzYjNKc1pDSXNJbk5qYUdWdFlWWmxjbk5wYjI0aU9qRXNJblJoWnlJNkluWXhMakV1TUNJc0luUmhaMDlpYW1WamRDSTZJak16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNaUxDSjJaWEp6YVc5dUlqb2lNUzR4TGpBaWZRPT0iLCJzaWduYXR1cmVzIjpbeyJrZXlpZCI6InRlc3QtZWQyNTUxOS1lOTMwZjAyMTQ0NDhhOTc2MGFmYzhiZDQ2M2Q2ZDNjNSIsInNpZyI6Ik9sV3dxYVFib2FGNUZjU05RWnBpOHFaY0JjNUJuS0sxSGFTcTNPVnZsbTFFVER5Mm8vdjAvNkticDZ4Q2hUOXlOcHpKT2I2Z3h5VE9OdFVWRVNKYUFBPT0ifV19",
721
+ "anchors": {
722
+ "schemaVersion": 1,
723
+ "environment": "test",
724
+ "serial": 1,
725
+ "legacyUnsigned": {
726
+ "never-enrolled/app": "0.1.0"
727
+ },
728
+ "keys": [
729
+ {
730
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
731
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
732
+ "publisher": "octocat",
733
+ "githubOwner": {
734
+ "login": "octocat",
735
+ "id": 583231
736
+ },
737
+ "notBefore": "2026-10-01T00:00:00Z",
738
+ "notAfter": "2028-10-01T00:00:00Z",
739
+ "status": "active",
740
+ "enrolment": {
741
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
742
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
743
+ "signatures": [
744
+ {
745
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
746
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
747
+ }
748
+ ]
749
+ },
750
+ "review": "public conformance vector"
751
+ }
752
+ ]
753
+ },
754
+ "context": {
755
+ "environment": "test",
756
+ "now": 1791849600000,
757
+ "expect": {
758
+ "project": "octocat/hello-world",
759
+ "repository": "https://github.com/octocat/hello-world",
760
+ "tag": "v1.1.0",
761
+ "publicCommit": "1111111111111111111111111111111111111111",
762
+ "publicTree": "2222222222222222222222222222222222222222",
763
+ "tagObject": "3333333333333333333333333333333333333333"
764
+ }
765
+ },
766
+ "expected": "STATEMENT_NOT_CANONICAL"
767
+ },
768
+ {
769
+ "name": "pretty-printed statement",
770
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXdvZ0lDSnpZMmhsYldGV1pYSnphVzl1SWpvZ01Td0tJQ0FpY0hWaWJHbHphR1Z5SWpvZ0ltOWpkRzlqWVhRaUxBb2dJQ0p3Y205cVpXTjBJam9nSW05amRHOWpZWFF2YUdWc2JHOHRkMjl5YkdRaUxBb2dJQ0oyWlhKemFXOXVJam9nSWpFdU1TNHdJaXdLSUNBaWRHRm5Jam9nSW5ZeExqRXVNQ0lzQ2lBZ0luSmxjRzl6YVhSdmNua2lPaUFpYUhSMGNITTZMeTluYVhSb2RXSXVZMjl0TDI5amRHOWpZWFF2YUdWc2JHOHRkMjl5YkdRaUxBb2dJQ0p3ZFdKc2FXTkRiMjF0YVhRaU9pQWlNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVNJc0NpQWdJbkIxWW14cFkxUnlaV1VpT2lBaU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNaUlzQ2lBZ0luUmhaMDlpYW1WamRDSTZJQ0l6TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNeklpd0tJQ0FpWm1sc1pYTWlPaUJiQ2lBZ0lDQjdDaUFnSUNBZ0lDSndZWFJvSWpvZ0luQjFZbXhwWXkxemIzVnlZMlV1ZEdGeUlpd0tJQ0FnSUNBZ0luTm9ZVEkxTmlJNklDSmpaalZtTWpObU9HTTFOREV5Wm1Gak5EUm1OelE1Tm1abU5tTmpNR0k0T1Rsak5XSXlOakpsTVRVeU1tUTBNRGc0WTJNNE5qY3lNell5T0RjNVlqZ3pJaXdLSUNBZ0lDQWdJbk5wZW1VaU9pQTBDaUFnSUNCOUxBb2dJQ0FnZXdvZ0lDQWdJQ0FpY0dGMGFDSTZJQ0p3ZFdKc2FYTm9MV05vWldOckxtcHpiMjRpTEFvZ0lDQWdJQ0FpYzJoaE1qVTJJam9nSWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxBb2dJQ0FnSUNBaWMybDZaU0k2SURFNENpQWdJQ0I5TEFvZ0lDQWdld29nSUNBZ0lDQWljR0YwYUNJNklDSnlaV3hsWVhObExYSmxZMlZwY0hRdWFuTnZiaUlzQ2lBZ0lDQWdJQ0p6YUdFeU5UWWlPaUFpTTJSak56TTJORGMxT0dFeE5HVTJNRGsyTTJVMFltVTRNamcwTTJGbE9EQmlNRFEzWkRJM05UVTNNVGMzWmpNM09HSTVZekZtWm1Sak56RTFZbVkxWXlJc0NpQWdJQ0FnSUNKemFYcGxJam9nTWpJS0lDQWdJSDBzQ2lBZ0lDQjdDaUFnSUNBZ0lDSndZWFJvSWpvZ0luTnBkR1V2YUdWc2JHOHRkMjl5YkdRdk1TNHhMakF2Wkc5amRXMWxiblJ6TDBOUFRsUlNRVU5VTG0xa0lpd0tJQ0FnSUNBZ0luTm9ZVEkxTmlJNklDSXdOV1poWkdFME1HRTVOelV4TjJFek1qVTJaR1kyWXpWaU1XRTFaV1ZtTWpZeE5UVTJOVGhqWW1KaU4yTmlPRFkwWWpJNU56azFaakU0T0dObVpESTBJaXdLSUNBZ0lDQWdJbk5wZW1VaU9pQXhOd29nSUNBZ2ZTd0tJQ0FnSUhzS0lDQWdJQ0FnSW5CaGRHZ2lPaUFpYzJsMFpTOW9aV3hzYnkxM2IzSnNaQzh4TGpFdU1DOXlaV3hsWVhObExtcHpiMjRpTEFvZ0lDQWdJQ0FpYzJoaE1qVTJJam9nSWpnM01EZGhPVGM1TmpaalpqbGpNMlpqTURJMlpqWmlaV0kyWTJFeVlUWTRaV1V3Tldaa01ERTJPREV6T0dVeFlXVmhaR1l4WkRobVptSTVaRE5qWlRJaUxBb2dJQ0FnSUNBaWMybDZaU0k2SURNNUNpQWdJQ0I5Q2lBZ1hTd0tJQ0FpYVhOemRXVmtRWFFpT2lBaU1qQXlOaTB4TUMweE0xUXdNRG93TURvd01Gb2lMQW9nSUNKclpYbEpaQ0k2SUNKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUNuMD0iLCJzaWduYXR1cmVzIjpbeyJrZXlpZCI6InRlc3QtZWQyNTUxOS1lOTMwZjAyMTQ0NDhhOTc2MGFmYzhiZDQ2M2Q2ZDNjNSIsInNpZyI6InlRK3cxc000SVB3Wlg4bTg3WVRmVVM5SlJHRmpZdEJibWw2VVh4ejhWZnl1OXMwSTJTSGVXUEl0c3JFdDZvY1h2M2RCa0pGK2FuUEVPdHdCZmZXakF3PT0ifV19",
771
+ "anchors": {
772
+ "schemaVersion": 1,
773
+ "environment": "test",
774
+ "serial": 1,
775
+ "legacyUnsigned": {
776
+ "never-enrolled/app": "0.1.0"
777
+ },
778
+ "keys": [
779
+ {
780
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
781
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
782
+ "publisher": "octocat",
783
+ "githubOwner": {
784
+ "login": "octocat",
785
+ "id": 583231
786
+ },
787
+ "notBefore": "2026-10-01T00:00:00Z",
788
+ "notAfter": "2028-10-01T00:00:00Z",
789
+ "status": "active",
790
+ "enrolment": {
791
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
792
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
793
+ "signatures": [
794
+ {
795
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
796
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
797
+ }
798
+ ]
799
+ },
800
+ "review": "public conformance vector"
801
+ }
802
+ ]
803
+ },
804
+ "context": {
805
+ "environment": "test",
806
+ "now": 1791849600000,
807
+ "expect": {
808
+ "project": "octocat/hello-world",
809
+ "repository": "https://github.com/octocat/hello-world",
810
+ "tag": "v1.1.0",
811
+ "publicCommit": "1111111111111111111111111111111111111111",
812
+ "publicTree": "2222222222222222222222222222222222222222",
813
+ "tagObject": "3333333333333333333333333333333333333333"
814
+ }
815
+ },
816
+ "expected": "STATEMENT_NOT_CANONICAL"
817
+ },
818
+ {
819
+ "name": "duplicate statement key",
820
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKMlpYSnphVzl1SWpvaU9TNDVMamtpTENKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiIwNUlsdUNUV1FpNE5ocWQwNzhKeGF6WEc3TU5IUWFDSk1mVWwyL055YmJocGlaVnJFU05VNmp0Q3hUTXJ6ZnhMR2FNZ0duV3prNWQ2a3FINnkvaStEdz09In1dfQ==",
821
+ "anchors": {
822
+ "schemaVersion": 1,
823
+ "environment": "test",
824
+ "serial": 1,
825
+ "legacyUnsigned": {
826
+ "never-enrolled/app": "0.1.0"
827
+ },
828
+ "keys": [
829
+ {
830
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
831
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
832
+ "publisher": "octocat",
833
+ "githubOwner": {
834
+ "login": "octocat",
835
+ "id": 583231
836
+ },
837
+ "notBefore": "2026-10-01T00:00:00Z",
838
+ "notAfter": "2028-10-01T00:00:00Z",
839
+ "status": "active",
840
+ "enrolment": {
841
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
842
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
843
+ "signatures": [
844
+ {
845
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
846
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
847
+ }
848
+ ]
849
+ },
850
+ "review": "public conformance vector"
851
+ }
852
+ ]
853
+ },
854
+ "context": {
855
+ "environment": "test",
856
+ "now": 1791849600000,
857
+ "expect": {
858
+ "project": "octocat/hello-world",
859
+ "repository": "https://github.com/octocat/hello-world",
860
+ "tag": "v1.1.0",
861
+ "publicCommit": "1111111111111111111111111111111111111111",
862
+ "publicTree": "2222222222222222222222222222222222222222",
863
+ "tagObject": "3333333333333333333333333333333333333333"
864
+ }
865
+ },
866
+ "expected": "STATEMENT_NOT_CANONICAL"
867
+ },
868
+ {
869
+ "name": "NFD Unicode project name",
870
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aY3lCYkd4dkxYZHZjbXhrSWl3aWNIVmliR2xqUTI5dGJXbDBJam9pTVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1TSXNJbkIxWW14cFkxUnlaV1VpT2lJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlJaXdpY0hWaWJHbHphR1Z5SWpvaWIyTjBiMk5oZENJc0luSmxjRzl6YVhSdmNua2lPaUpvZEhSd2N6b3ZMMmRwZEdoMVlpNWpiMjB2YjJOMGIyTmhkQzlvWld4c2J5MTNiM0pzWkNJc0luTmphR1Z0WVZabGNuTnBiMjRpT2pFc0luUmhaeUk2SW5ZeExqRXVNQ0lzSW5SaFowOWlhbVZqZENJNklqTXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek1pTENKMlpYSnphVzl1SWpvaU1TNHhMakFpZlE9PSIsInNpZ25hdHVyZXMiOlt7ImtleWlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwic2lnIjoia0l3QUVKMlArY3c3K1hzaUpQMmY4TE5iWDZmWGZVVkxaODVjSmszUmN2cU1hNm5nS3Z5cDI5UUhpZkFXeEZVem11cjFCUy9SVStDSmNXTWN6UFR4Q0E9PSJ9XX0=",
871
+ "anchors": {
872
+ "schemaVersion": 1,
873
+ "environment": "test",
874
+ "serial": 1,
875
+ "legacyUnsigned": {
876
+ "never-enrolled/app": "0.1.0"
877
+ },
878
+ "keys": [
879
+ {
880
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
881
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
882
+ "publisher": "octocat",
883
+ "githubOwner": {
884
+ "login": "octocat",
885
+ "id": 583231
886
+ },
887
+ "notBefore": "2026-10-01T00:00:00Z",
888
+ "notAfter": "2028-10-01T00:00:00Z",
889
+ "status": "active",
890
+ "enrolment": {
891
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
892
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
893
+ "signatures": [
894
+ {
895
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
896
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
897
+ }
898
+ ]
899
+ },
900
+ "review": "public conformance vector"
901
+ }
902
+ ]
903
+ },
904
+ "context": {
905
+ "environment": "test",
906
+ "now": 1791849600000,
907
+ "expect": {
908
+ "project": "octocat/hello-world",
909
+ "repository": "https://github.com/octocat/hello-world",
910
+ "tag": "v1.1.0",
911
+ "publicCommit": "1111111111111111111111111111111111111111",
912
+ "publicTree": "2222222222222222222222222222222222222222",
913
+ "tagObject": "3333333333333333333333333333333333333333"
914
+ }
915
+ },
916
+ "expected": "STATEMENT_INVALID"
917
+ },
918
+ {
919
+ "name": "invalid statement schema version",
920
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam95TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJYbk9HcEE4bXlVNjBQRGI5ZTF0VnBSa2xVNXFibWZYNy9LKzRNVHgrWE0wWm1uRzhTYjd1Y0pBcnBsOXBlc3FmVDJ1UUU2cmJ5UlJnS3RoaklueVpDZz09In1dfQ==",
921
+ "anchors": {
922
+ "schemaVersion": 1,
923
+ "environment": "test",
924
+ "serial": 1,
925
+ "legacyUnsigned": {
926
+ "never-enrolled/app": "0.1.0"
927
+ },
928
+ "keys": [
929
+ {
930
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
931
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
932
+ "publisher": "octocat",
933
+ "githubOwner": {
934
+ "login": "octocat",
935
+ "id": 583231
936
+ },
937
+ "notBefore": "2026-10-01T00:00:00Z",
938
+ "notAfter": "2028-10-01T00:00:00Z",
939
+ "status": "active",
940
+ "enrolment": {
941
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
942
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
943
+ "signatures": [
944
+ {
945
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
946
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
947
+ }
948
+ ]
949
+ },
950
+ "review": "public conformance vector"
951
+ }
952
+ ]
953
+ },
954
+ "context": {
955
+ "environment": "test",
956
+ "now": 1791849600000,
957
+ "expect": {
958
+ "project": "octocat/hello-world",
959
+ "repository": "https://github.com/octocat/hello-world",
960
+ "tag": "v1.1.0",
961
+ "publicCommit": "1111111111111111111111111111111111111111",
962
+ "publicTree": "2222222222222222222222222222222222222222",
963
+ "tagObject": "3333333333333333333333333333333333333333"
964
+ }
965
+ },
966
+ "expected": "STATEMENT_INVALID"
967
+ },
968
+ {
969
+ "name": "older version after a newer admitted version",
970
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR3TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNQzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJbUZpTXpkbFl6WXdNRE0zWTJRelpEWm1aVGcxTVRka056TXdaakpsWTJWbE5HUTFOR000WkdZd09ERmxOV015WW1GbU1URmxOVGRtT0RGbU9UVXdOV0VpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0d0xqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1DNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiIxSi9BSlkrZnB6Z21GWmhNbVVEa2hhTEZXNzN0eUI3SFI2NTBwSEpzY0Z1NG5GbjBRZ1lzRCswZGs0aTR1bEdxVVVyNlc2WG9oTGlxSlNVMk1QVEREZz09In1dfQ==",
971
+ "anchors": {
972
+ "schemaVersion": 1,
973
+ "environment": "test",
974
+ "serial": 1,
975
+ "legacyUnsigned": {
976
+ "never-enrolled/app": "0.1.0"
977
+ },
978
+ "keys": [
979
+ {
980
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
981
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
982
+ "publisher": "octocat",
983
+ "githubOwner": {
984
+ "login": "octocat",
985
+ "id": 583231
986
+ },
987
+ "notBefore": "2026-10-01T00:00:00Z",
988
+ "notAfter": "2028-10-01T00:00:00Z",
989
+ "status": "active",
990
+ "enrolment": {
991
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
992
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
993
+ "signatures": [
994
+ {
995
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
996
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
997
+ }
998
+ ]
999
+ },
1000
+ "review": "public conformance vector"
1001
+ }
1002
+ ]
1003
+ },
1004
+ "context": {
1005
+ "environment": "test",
1006
+ "now": 1791849600000,
1007
+ "highest": {
1008
+ "version": "1.1.0",
1009
+ "statementSha256": "d543f96a120281c411fe971f5e0ca14c5b876a160b9187f879c9ef22741f65f2"
1010
+ }
1011
+ },
1012
+ "expected": "VERSION_ROLLBACK"
1013
+ },
1014
+ {
1015
+ "name": "same version with a different statement digest",
1016
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVEpVTWpNNk5UazZOVGxhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiI3dFpMeGJleDYxRDl6WERDbTlSeENYWVlrOXI3Q2M4TGljSFF1cUVFY2lqell2QXJPbzNneEZqN0w3dXByRGQxelVERnY0aDJKMzl0OGZDNmFYTlBBdz09In1dfQ==",
1017
+ "anchors": {
1018
+ "schemaVersion": 1,
1019
+ "environment": "test",
1020
+ "serial": 1,
1021
+ "legacyUnsigned": {
1022
+ "never-enrolled/app": "0.1.0"
1023
+ },
1024
+ "keys": [
1025
+ {
1026
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1027
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1028
+ "publisher": "octocat",
1029
+ "githubOwner": {
1030
+ "login": "octocat",
1031
+ "id": 583231
1032
+ },
1033
+ "notBefore": "2026-10-01T00:00:00Z",
1034
+ "notAfter": "2028-10-01T00:00:00Z",
1035
+ "status": "active",
1036
+ "enrolment": {
1037
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1038
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1039
+ "signatures": [
1040
+ {
1041
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1042
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1043
+ }
1044
+ ]
1045
+ },
1046
+ "review": "public conformance vector"
1047
+ }
1048
+ ]
1049
+ },
1050
+ "context": {
1051
+ "environment": "test",
1052
+ "now": 1791849600000,
1053
+ "highest": {
1054
+ "version": "1.1.0",
1055
+ "statementSha256": "d543f96a120281c411fe971f5e0ca14c5b876a160b9187f879c9ef22741f65f2"
1056
+ }
1057
+ },
1058
+ "expected": "VERSION_REUSED"
1059
+ },
1060
+ {
1061
+ "name": "identical statement replay is accepted",
1062
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJPeDdmVHB6S1dsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
1063
+ "anchors": {
1064
+ "schemaVersion": 1,
1065
+ "environment": "test",
1066
+ "serial": 1,
1067
+ "legacyUnsigned": {
1068
+ "never-enrolled/app": "0.1.0"
1069
+ },
1070
+ "keys": [
1071
+ {
1072
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1073
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1074
+ "publisher": "octocat",
1075
+ "githubOwner": {
1076
+ "login": "octocat",
1077
+ "id": 583231
1078
+ },
1079
+ "notBefore": "2026-10-01T00:00:00Z",
1080
+ "notAfter": "2028-10-01T00:00:00Z",
1081
+ "status": "active",
1082
+ "enrolment": {
1083
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1084
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1085
+ "signatures": [
1086
+ {
1087
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1088
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1089
+ }
1090
+ ]
1091
+ },
1092
+ "review": "public conformance vector"
1093
+ }
1094
+ ]
1095
+ },
1096
+ "context": {
1097
+ "environment": "test",
1098
+ "now": 1791849600000,
1099
+ "highest": {
1100
+ "version": "1.1.0",
1101
+ "statementSha256": "d543f96a120281c411fe971f5e0ca14c5b876a160b9187f879c9ef22741f65f2"
1102
+ }
1103
+ },
1104
+ "expected": "VERIFIED"
1105
+ },
1106
+ {
1107
+ "name": "test key presented to a production verifier",
1108
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJPeDdmVHB6S1dsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
1109
+ "anchors": {
1110
+ "schemaVersion": 1,
1111
+ "environment": "production",
1112
+ "serial": 1,
1113
+ "legacyUnsigned": {},
1114
+ "keys": []
1115
+ },
1116
+ "context": {
1117
+ "environment": "production",
1118
+ "now": 1791849600000
1119
+ },
1120
+ "expected": "KEY_TEST_REFUSED"
1121
+ },
1122
+ {
1123
+ "name": "production anchors list a test key",
1124
+ "envelope": null,
1125
+ "anchors": {
1126
+ "schemaVersion": 1,
1127
+ "environment": "production",
1128
+ "serial": 1,
1129
+ "legacyUnsigned": {},
1130
+ "keys": [
1131
+ {
1132
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1133
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1134
+ "publisher": "octocat",
1135
+ "githubOwner": {
1136
+ "login": "octocat",
1137
+ "id": 583231
1138
+ },
1139
+ "notBefore": "2026-10-01T00:00:00Z",
1140
+ "notAfter": "2028-10-01T00:00:00Z",
1141
+ "status": "active",
1142
+ "enrolment": {
1143
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1144
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1145
+ "signatures": [
1146
+ {
1147
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1148
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1149
+ }
1150
+ ]
1151
+ },
1152
+ "review": "public conformance vector"
1153
+ }
1154
+ ]
1155
+ },
1156
+ "context": {
1157
+ "environment": "production"
1158
+ },
1159
+ "expected": "ANCHORS_INVALID"
1160
+ },
1161
+ {
1162
+ "name": "enrolment proof signed by a different key",
1163
+ "envelope": null,
1164
+ "anchors": {
1165
+ "schemaVersion": 1,
1166
+ "environment": "test",
1167
+ "serial": 1,
1168
+ "legacyUnsigned": {
1169
+ "never-enrolled/app": "0.1.0"
1170
+ },
1171
+ "keys": [
1172
+ {
1173
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1174
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1175
+ "publisher": "octocat",
1176
+ "githubOwner": {
1177
+ "login": "octocat",
1178
+ "id": 583231
1179
+ },
1180
+ "notBefore": "2026-10-01T00:00:00Z",
1181
+ "notAfter": "2028-10-01T00:00:00Z",
1182
+ "status": "active",
1183
+ "enrolment": {
1184
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1185
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1186
+ "signatures": [
1187
+ {
1188
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1189
+ "sig": "2XfhKMgFPCDlJ4/2pV6g9di7oiPJijuD+HQYKcV992iK+IiVS1kEKkexj3mQugS5IB9cXm9wLQCQgKyDjVWrBg=="
1190
+ }
1191
+ ]
1192
+ },
1193
+ "review": "public conformance vector"
1194
+ }
1195
+ ]
1196
+ },
1197
+ "context": {
1198
+ "environment": "test"
1199
+ },
1200
+ "expected": "ANCHORS_INVALID"
1201
+ },
1202
+ {
1203
+ "name": "anchor environment differs from verifier",
1204
+ "envelope": null,
1205
+ "anchors": {
1206
+ "schemaVersion": 1,
1207
+ "environment": "production",
1208
+ "serial": 1,
1209
+ "legacyUnsigned": {
1210
+ "never-enrolled/app": "0.1.0"
1211
+ },
1212
+ "keys": [
1213
+ {
1214
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1215
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1216
+ "publisher": "octocat",
1217
+ "githubOwner": {
1218
+ "login": "octocat",
1219
+ "id": 583231
1220
+ },
1221
+ "notBefore": "2026-10-01T00:00:00Z",
1222
+ "notAfter": "2028-10-01T00:00:00Z",
1223
+ "status": "active",
1224
+ "enrolment": {
1225
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1226
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1227
+ "signatures": [
1228
+ {
1229
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1230
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1231
+ }
1232
+ ]
1233
+ },
1234
+ "review": "public conformance vector"
1235
+ }
1236
+ ]
1237
+ },
1238
+ "context": {
1239
+ "environment": "test"
1240
+ },
1241
+ "expected": "ANCHORS_INVALID"
1242
+ },
1243
+ {
1244
+ "name": "unsafe GitHub owner in a validly signed anchor claim",
1245
+ "envelope": null,
1246
+ "anchors": {
1247
+ "schemaVersion": 1,
1248
+ "environment": "test",
1249
+ "serial": 1,
1250
+ "legacyUnsigned": {
1251
+ "never-enrolled/app": "0.1.0"
1252
+ },
1253
+ "keys": [
1254
+ {
1255
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1256
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1257
+ "publisher": "octocat",
1258
+ "githubOwner": {
1259
+ "login": "octocat",
1260
+ "id": 583231
1261
+ },
1262
+ "notBefore": "2026-10-01T00:00:00Z",
1263
+ "notAfter": "2028-10-01T00:00:00Z",
1264
+ "status": "active",
1265
+ "enrolment": {
1266
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1267
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1268
+ "signatures": [
1269
+ {
1270
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1271
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1272
+ }
1273
+ ]
1274
+ },
1275
+ "review": "public conformance vector"
1276
+ },
1277
+ {
1278
+ "keyId": "test-ed25519-e3e774901a916e5837b74b4419ea6a9c",
1279
+ "publicKey": "zykUr1FC3lWrFmASt55FC6yNA0f1qEC7vIuyXm/Zjwk=",
1280
+ "publisher": "octocat",
1281
+ "githubOwner": {
1282
+ "login": "../octocat",
1283
+ "id": 71004
1284
+ },
1285
+ "notBefore": "2026-10-01T00:00:00Z",
1286
+ "notAfter": "2028-10-01T00:00:00Z",
1287
+ "status": "active",
1288
+ "enrolment": {
1289
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1290
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NzEwMDQsImxvZ2luIjoiLi4vb2N0b2NhdCJ9LCJpc3N1ZWRBdCI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwia2V5SWQiOiJ0ZXN0LWVkMjU1MTktZTNlNzc0OTAxYTkxNmU1ODM3Yjc0YjQ0MTllYTZhOWMiLCJub3RBZnRlciI6IjIwMjgtMTAtMDFUMDA6MDA6MDBaIiwibm90QmVmb3JlIjoiMjAyNi0xMC0wMVQwMDowMDowMFoiLCJwdWJsaWNLZXkiOiJ6eWtVcjFGQzNsV3JGbUFTdDU1RkM2eU5BMGYxcUVDN3ZJdXlYbS9aandrPSIsInB1Ymxpc2hlciI6Im9jdG9jYXQiLCJzY2hlbWFWZXJzaW9uIjoxLCJ1bnNpZ25lZFRocm91Z2giOnt9fQ==",
1291
+ "signatures": [
1292
+ {
1293
+ "keyid": "test-ed25519-e3e774901a916e5837b74b4419ea6a9c",
1294
+ "sig": "EnvZh5e2u4JzrfCT+CaPohUyBqpGjA0hKpGEPmtejc+YsYhc1OongTnkvWF4v+3sjpvv9h3DM7NDV/2Lh6lWCw=="
1295
+ }
1296
+ ]
1297
+ },
1298
+ "review": "public conformance vector"
1299
+ }
1300
+ ]
1301
+ },
1302
+ "context": {
1303
+ "environment": "test"
1304
+ },
1305
+ "expected": "ANCHORS_INVALID"
1306
+ },
1307
+ {
1308
+ "name": "legacy floor overlaps an enrolled publisher",
1309
+ "envelope": null,
1310
+ "anchors": {
1311
+ "schemaVersion": 1,
1312
+ "environment": "test",
1313
+ "serial": 1,
1314
+ "legacyUnsigned": {
1315
+ "octocat/hello-world": "9.9.9"
1316
+ },
1317
+ "keys": [
1318
+ {
1319
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1320
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1321
+ "publisher": "octocat",
1322
+ "githubOwner": {
1323
+ "login": "octocat",
1324
+ "id": 583231
1325
+ },
1326
+ "notBefore": "2026-10-01T00:00:00Z",
1327
+ "notAfter": "2028-10-01T00:00:00Z",
1328
+ "status": "active",
1329
+ "enrolment": {
1330
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1331
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1332
+ "signatures": [
1333
+ {
1334
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1335
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1336
+ }
1337
+ ]
1338
+ },
1339
+ "review": "public conformance vector"
1340
+ }
1341
+ ]
1342
+ },
1343
+ "context": {
1344
+ "environment": "test"
1345
+ },
1346
+ "expected": "ANCHORS_INVALID"
1347
+ },
1348
+ {
1349
+ "name": "anchor serial is equal to the last accepted serial",
1350
+ "envelope": null,
1351
+ "anchors": {
1352
+ "schemaVersion": 1,
1353
+ "environment": "test",
1354
+ "serial": 1,
1355
+ "legacyUnsigned": {
1356
+ "never-enrolled/app": "0.1.0"
1357
+ },
1358
+ "keys": [
1359
+ {
1360
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1361
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1362
+ "publisher": "octocat",
1363
+ "githubOwner": {
1364
+ "login": "octocat",
1365
+ "id": 583231
1366
+ },
1367
+ "notBefore": "2026-10-01T00:00:00Z",
1368
+ "notAfter": "2028-10-01T00:00:00Z",
1369
+ "status": "active",
1370
+ "enrolment": {
1371
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1372
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1373
+ "signatures": [
1374
+ {
1375
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1376
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1377
+ }
1378
+ ]
1379
+ },
1380
+ "review": "public conformance vector"
1381
+ }
1382
+ ]
1383
+ },
1384
+ "context": {
1385
+ "environment": "test",
1386
+ "minimumSerial": 1
1387
+ },
1388
+ "expected": "ANCHORS_STALE"
1389
+ },
1390
+ {
1391
+ "name": "compromised key without a reviewed keep digest",
1392
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJPeDdmVHB6S1dsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
1393
+ "anchors": {
1394
+ "schemaVersion": 1,
1395
+ "environment": "test",
1396
+ "serial": 1,
1397
+ "legacyUnsigned": {
1398
+ "never-enrolled/app": "0.1.0"
1399
+ },
1400
+ "keys": [
1401
+ {
1402
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1403
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1404
+ "publisher": "octocat",
1405
+ "githubOwner": {
1406
+ "login": "octocat",
1407
+ "id": 583231
1408
+ },
1409
+ "notBefore": "2026-10-01T00:00:00Z",
1410
+ "notAfter": "2028-10-01T00:00:00Z",
1411
+ "status": "compromised",
1412
+ "enrolment": {
1413
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1414
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1415
+ "signatures": [
1416
+ {
1417
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1418
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1419
+ }
1420
+ ]
1421
+ },
1422
+ "review": "public conformance vector",
1423
+ "compromisedAt": "2026-10-13T00:00:00Z",
1424
+ "keepStatements": []
1425
+ }
1426
+ ]
1427
+ },
1428
+ "context": {
1429
+ "environment": "test",
1430
+ "now": 1791849600000,
1431
+ "expect": {
1432
+ "project": "octocat/hello-world",
1433
+ "repository": "https://github.com/octocat/hello-world",
1434
+ "tag": "v1.1.0",
1435
+ "publicCommit": "1111111111111111111111111111111111111111",
1436
+ "publicTree": "2222222222222222222222222222222222222222",
1437
+ "tagObject": "3333333333333333333333333333333333333333"
1438
+ }
1439
+ },
1440
+ "expected": "KEY_REVOKED"
1441
+ },
1442
+ {
1443
+ "name": "compromised key with a reviewed keep digest",
1444
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJPeDdmVHB6S1dsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
1445
+ "anchors": {
1446
+ "schemaVersion": 1,
1447
+ "environment": "test",
1448
+ "serial": 1,
1449
+ "legacyUnsigned": {
1450
+ "never-enrolled/app": "0.1.0"
1451
+ },
1452
+ "keys": [
1453
+ {
1454
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1455
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1456
+ "publisher": "octocat",
1457
+ "githubOwner": {
1458
+ "login": "octocat",
1459
+ "id": 583231
1460
+ },
1461
+ "notBefore": "2026-10-01T00:00:00Z",
1462
+ "notAfter": "2028-10-01T00:00:00Z",
1463
+ "status": "compromised",
1464
+ "enrolment": {
1465
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1466
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1467
+ "signatures": [
1468
+ {
1469
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1470
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1471
+ }
1472
+ ]
1473
+ },
1474
+ "review": "public conformance vector",
1475
+ "compromisedAt": "2026-10-13T00:00:00Z",
1476
+ "keepStatements": [
1477
+ "d543f96a120281c411fe971f5e0ca14c5b876a160b9187f879c9ef22741f65f2"
1478
+ ]
1479
+ }
1480
+ ]
1481
+ },
1482
+ "context": {
1483
+ "environment": "test",
1484
+ "now": 1791849600000,
1485
+ "expect": {
1486
+ "project": "octocat/hello-world",
1487
+ "repository": "https://github.com/octocat/hello-world",
1488
+ "tag": "v1.1.0",
1489
+ "publicCommit": "1111111111111111111111111111111111111111",
1490
+ "publicTree": "2222222222222222222222222222222222222222",
1491
+ "tagObject": "3333333333333333333333333333333333333333"
1492
+ }
1493
+ },
1494
+ "expected": "VERIFIED"
1495
+ },
1496
+ {
1497
+ "name": "retired key verifies statement from before retirement",
1498
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJPeDdmVHB6S1dsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
1499
+ "anchors": {
1500
+ "schemaVersion": 1,
1501
+ "environment": "test",
1502
+ "serial": 1,
1503
+ "legacyUnsigned": {
1504
+ "never-enrolled/app": "0.1.0"
1505
+ },
1506
+ "keys": [
1507
+ {
1508
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1509
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1510
+ "publisher": "octocat",
1511
+ "githubOwner": {
1512
+ "login": "octocat",
1513
+ "id": 583231
1514
+ },
1515
+ "notBefore": "2026-10-01T00:00:00Z",
1516
+ "notAfter": "2028-10-01T00:00:00Z",
1517
+ "status": "retired",
1518
+ "enrolment": {
1519
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1520
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1521
+ "signatures": [
1522
+ {
1523
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1524
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1525
+ }
1526
+ ]
1527
+ },
1528
+ "review": "public conformance vector",
1529
+ "retiredAt": "2026-10-13T00:00:01Z"
1530
+ }
1531
+ ]
1532
+ },
1533
+ "context": {
1534
+ "environment": "test",
1535
+ "now": 1791849600000,
1536
+ "expect": {
1537
+ "project": "octocat/hello-world",
1538
+ "repository": "https://github.com/octocat/hello-world",
1539
+ "tag": "v1.1.0",
1540
+ "publicCommit": "1111111111111111111111111111111111111111",
1541
+ "publicTree": "2222222222222222222222222222222222222222",
1542
+ "tagObject": "3333333333333333333333333333333333333333"
1543
+ }
1544
+ },
1545
+ "expected": "VERIFIED"
1546
+ },
1547
+ {
1548
+ "name": "retired key refuses statement at retirement time",
1549
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJPeDdmVHB6S1dsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
1550
+ "anchors": {
1551
+ "schemaVersion": 1,
1552
+ "environment": "test",
1553
+ "serial": 1,
1554
+ "legacyUnsigned": {
1555
+ "never-enrolled/app": "0.1.0"
1556
+ },
1557
+ "keys": [
1558
+ {
1559
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1560
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1561
+ "publisher": "octocat",
1562
+ "githubOwner": {
1563
+ "login": "octocat",
1564
+ "id": 583231
1565
+ },
1566
+ "notBefore": "2026-10-01T00:00:00Z",
1567
+ "notAfter": "2028-10-01T00:00:00Z",
1568
+ "status": "retired",
1569
+ "enrolment": {
1570
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1571
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1572
+ "signatures": [
1573
+ {
1574
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1575
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1576
+ }
1577
+ ]
1578
+ },
1579
+ "review": "public conformance vector",
1580
+ "retiredAt": "2026-10-13T00:00:00Z"
1581
+ }
1582
+ ]
1583
+ },
1584
+ "context": {
1585
+ "environment": "test",
1586
+ "now": 1791849600000,
1587
+ "expect": {
1588
+ "project": "octocat/hello-world",
1589
+ "repository": "https://github.com/octocat/hello-world",
1590
+ "tag": "v1.1.0",
1591
+ "publicCommit": "1111111111111111111111111111111111111111",
1592
+ "publicTree": "2222222222222222222222222222222222222222",
1593
+ "tagObject": "3333333333333333333333333333333333333333"
1594
+ }
1595
+ },
1596
+ "expected": "KEY_RETIRED"
1597
+ },
1598
+ {
1599
+ "name": "successor key signs the next release",
1600
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR5TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNaTR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJakl4WVdKbU4yUmhNbVUyWWpSa01qVTVaamcxWkdOaU16RTBOelZtWW1KbVltUmlPRGhrWmpoaU16Qm1Zamt5WkRKaU1UVTRaVE00WldJeVlUZGlZamtpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RPRE16WkdNNU5XVTBObUUyT0RZeVpXSTJNRGRsTjJGaVl6TXdNVGhrTTJFaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eUxqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1pNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktODMzZGM5NWU0NmE2ODYyZWI2MDdlN2FiYzMwMThkM2EiLCJzaWciOiJvZlZJbEZXQjg1RmJQQTVONFVXUzZ5em1aTll5dVRRNEltcDF0TWkwZ0srSFZud2ZleENrKzVRK0JDYS9zSDFDVXRkOGJ3aDBETDB0K0lGMktrVXRCQT09In1dfQ==",
1601
+ "anchors": {
1602
+ "schemaVersion": 1,
1603
+ "environment": "test",
1604
+ "serial": 1,
1605
+ "legacyUnsigned": {
1606
+ "never-enrolled/app": "0.1.0"
1607
+ },
1608
+ "keys": [
1609
+ {
1610
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1611
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1612
+ "publisher": "octocat",
1613
+ "githubOwner": {
1614
+ "login": "octocat",
1615
+ "id": 583231
1616
+ },
1617
+ "notBefore": "2026-10-01T00:00:00Z",
1618
+ "notAfter": "2028-10-01T00:00:00Z",
1619
+ "status": "retired",
1620
+ "enrolment": {
1621
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1622
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1623
+ "signatures": [
1624
+ {
1625
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1626
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1627
+ }
1628
+ ]
1629
+ },
1630
+ "review": "public conformance vector",
1631
+ "retiredAt": "2026-10-13T00:00:00Z"
1632
+ },
1633
+ {
1634
+ "keyId": "test-ed25519-833dc95e46a6862eb607e7abc3018d3a",
1635
+ "publicKey": "JqdUcMkhPsrfHbLAIBXuAKyCuDgnr3Zfw8neadPuy74=",
1636
+ "publisher": "octocat",
1637
+ "githubOwner": {
1638
+ "login": "octocat",
1639
+ "id": 583231
1640
+ },
1641
+ "notBefore": "2026-10-01T00:00:00Z",
1642
+ "notAfter": "2028-10-01T00:00:00Z",
1643
+ "status": "active",
1644
+ "enrolment": {
1645
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1646
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LTgzM2RjOTVlNDZhNjg2MmViNjA3ZTdhYmMzMDE4ZDNhIiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiSnFkVWNNa2hQc3JmSGJMQUlCWHVBS3lDdURnbnIzWmZ3OG5lYWRQdXk3ND0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1647
+ "signatures": [
1648
+ {
1649
+ "keyid": "test-ed25519-833dc95e46a6862eb607e7abc3018d3a",
1650
+ "sig": "O/uWxyq1Cs/zlQM8JTG5SSi9URRxMUq3CK3JIkO97e7nv2QekiRfmR0so3qYSEEpqkTBDe8cl0bP9vjEQOsNAg=="
1651
+ }
1652
+ ]
1653
+ },
1654
+ "review": "public conformance vector"
1655
+ }
1656
+ ]
1657
+ },
1658
+ "context": {
1659
+ "environment": "test",
1660
+ "now": 1791849600000,
1661
+ "expect": {
1662
+ "project": "octocat/hello-world",
1663
+ "repository": "https://github.com/octocat/hello-world",
1664
+ "tag": "v1.2.0",
1665
+ "publicCommit": "1111111111111111111111111111111111111111",
1666
+ "publicTree": "2222222222222222222222222222222222222222",
1667
+ "tagObject": "3333333333333333333333333333333333333333"
1668
+ },
1669
+ "files": {
1670
+ "public-source.tar": "dGFyCg==",
1671
+ "release-receipt.json": "eyJzdGF0dXMiOiJSRUxFQVNFRCJ9Cg==",
1672
+ "publish-check.json": "eyJzdGF0dXMiOiJQQVNTIn0K",
1673
+ "site/hello-world/1.2.0/release.json": "eyJpZCI6ImhlbGxvLXdvcmxkIiwidmVyc2lvbiI6IjEuMi4wIn0K",
1674
+ "site/hello-world/1.2.0/documents/CONTRACT.md": "UHVibGljIGNvbnRyYWN0Lgo="
1675
+ }
1676
+ },
1677
+ "expected": "VERIFIED"
1678
+ },
1679
+ {
1680
+ "name": "statement issued before key validity starts",
1681
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1Ea3RNekJVTWpNNk5UazZOVGxhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJiTnJtRmJONkZmZS96djNMR21LVTlwaUIrUVBDWWttdDFCZjVreU9uVFE4L0lFZHpzbHNwMUpyNm9OWVlJcERhTG51M2dOTFpkZjNIZ2ZuR2xEODNCQT09In1dfQ==",
1682
+ "anchors": {
1683
+ "schemaVersion": 1,
1684
+ "environment": "test",
1685
+ "serial": 1,
1686
+ "legacyUnsigned": {
1687
+ "never-enrolled/app": "0.1.0"
1688
+ },
1689
+ "keys": [
1690
+ {
1691
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1692
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1693
+ "publisher": "octocat",
1694
+ "githubOwner": {
1695
+ "login": "octocat",
1696
+ "id": 583231
1697
+ },
1698
+ "notBefore": "2026-10-01T00:00:00Z",
1699
+ "notAfter": "2028-10-01T00:00:00Z",
1700
+ "status": "active",
1701
+ "enrolment": {
1702
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1703
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1704
+ "signatures": [
1705
+ {
1706
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1707
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1708
+ }
1709
+ ]
1710
+ },
1711
+ "review": "public conformance vector"
1712
+ }
1713
+ ]
1714
+ },
1715
+ "context": {
1716
+ "environment": "test",
1717
+ "now": 1791849600000,
1718
+ "expect": {
1719
+ "project": "octocat/hello-world",
1720
+ "repository": "https://github.com/octocat/hello-world",
1721
+ "tag": "v1.1.0",
1722
+ "publicCommit": "1111111111111111111111111111111111111111",
1723
+ "publicTree": "2222222222222222222222222222222222222222",
1724
+ "tagObject": "3333333333333333333333333333333333333333"
1725
+ }
1726
+ },
1727
+ "expected": "KEY_OUTSIDE_VALIDITY"
1728
+ },
1729
+ {
1730
+ "name": "statement issued one year in the future",
1731
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpjdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJRYnZSblk3bHV3aTFoNHphR3QrN29hYmdFOWVDeDhRUTFDNXZoeGdhWWxFSzkyaWkzOU9Ubjlvc0pjL0RuZklKYVdHQlZiSXpqbmZMUzRERzIrQW1DZz09In1dfQ==",
1732
+ "anchors": {
1733
+ "schemaVersion": 1,
1734
+ "environment": "test",
1735
+ "serial": 1,
1736
+ "legacyUnsigned": {
1737
+ "never-enrolled/app": "0.1.0"
1738
+ },
1739
+ "keys": [
1740
+ {
1741
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1742
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1743
+ "publisher": "octocat",
1744
+ "githubOwner": {
1745
+ "login": "octocat",
1746
+ "id": 583231
1747
+ },
1748
+ "notBefore": "2026-10-01T00:00:00Z",
1749
+ "notAfter": "2028-10-01T00:00:00Z",
1750
+ "status": "active",
1751
+ "enrolment": {
1752
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1753
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1754
+ "signatures": [
1755
+ {
1756
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1757
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1758
+ }
1759
+ ]
1760
+ },
1761
+ "review": "public conformance vector"
1762
+ }
1763
+ ]
1764
+ },
1765
+ "context": {
1766
+ "environment": "test",
1767
+ "now": 1791849600000,
1768
+ "expect": {
1769
+ "project": "octocat/hello-world",
1770
+ "repository": "https://github.com/octocat/hello-world",
1771
+ "tag": "v1.1.0",
1772
+ "publicCommit": "1111111111111111111111111111111111111111",
1773
+ "publicTree": "2222222222222222222222222222222222222222",
1774
+ "tagObject": "3333333333333333333333333333333333333333"
1775
+ }
1776
+ },
1777
+ "expected": "ISSUED_IN_FUTURE"
1778
+ },
1779
+ {
1780
+ "name": "statement tag differs from expected release",
1781
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJPeDdmVHB6S1dsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
1782
+ "anchors": {
1783
+ "schemaVersion": 1,
1784
+ "environment": "test",
1785
+ "serial": 1,
1786
+ "legacyUnsigned": {
1787
+ "never-enrolled/app": "0.1.0"
1788
+ },
1789
+ "keys": [
1790
+ {
1791
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1792
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1793
+ "publisher": "octocat",
1794
+ "githubOwner": {
1795
+ "login": "octocat",
1796
+ "id": 583231
1797
+ },
1798
+ "notBefore": "2026-10-01T00:00:00Z",
1799
+ "notAfter": "2028-10-01T00:00:00Z",
1800
+ "status": "active",
1801
+ "enrolment": {
1802
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1803
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1804
+ "signatures": [
1805
+ {
1806
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1807
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1808
+ }
1809
+ ]
1810
+ },
1811
+ "review": "public conformance vector"
1812
+ }
1813
+ ]
1814
+ },
1815
+ "context": {
1816
+ "environment": "test",
1817
+ "now": 1791849600000,
1818
+ "expect": {
1819
+ "project": "octocat/hello-world",
1820
+ "repository": "https://github.com/octocat/hello-world",
1821
+ "tag": "v1.1.1",
1822
+ "publicCommit": "1111111111111111111111111111111111111111",
1823
+ "publicTree": "2222222222222222222222222222222222222222",
1824
+ "tagObject": "3333333333333333333333333333333333333333"
1825
+ }
1826
+ },
1827
+ "expected": "SUBJECT_MISMATCH"
1828
+ },
1829
+ {
1830
+ "name": "declared document missing from bundle",
1831
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJPeDdmVHB6S1dsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
1832
+ "anchors": {
1833
+ "schemaVersion": 1,
1834
+ "environment": "test",
1835
+ "serial": 1,
1836
+ "legacyUnsigned": {
1837
+ "never-enrolled/app": "0.1.0"
1838
+ },
1839
+ "keys": [
1840
+ {
1841
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1842
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1843
+ "publisher": "octocat",
1844
+ "githubOwner": {
1845
+ "login": "octocat",
1846
+ "id": 583231
1847
+ },
1848
+ "notBefore": "2026-10-01T00:00:00Z",
1849
+ "notAfter": "2028-10-01T00:00:00Z",
1850
+ "status": "active",
1851
+ "enrolment": {
1852
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1853
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1854
+ "signatures": [
1855
+ {
1856
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1857
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1858
+ }
1859
+ ]
1860
+ },
1861
+ "review": "public conformance vector"
1862
+ }
1863
+ ]
1864
+ },
1865
+ "context": {
1866
+ "environment": "test",
1867
+ "now": 1791849600000,
1868
+ "expect": {
1869
+ "project": "octocat/hello-world",
1870
+ "repository": "https://github.com/octocat/hello-world",
1871
+ "tag": "v1.1.0",
1872
+ "publicCommit": "1111111111111111111111111111111111111111",
1873
+ "publicTree": "2222222222222222222222222222222222222222",
1874
+ "tagObject": "3333333333333333333333333333333333333333"
1875
+ },
1876
+ "files": {
1877
+ "public-source.tar": "dGFyCg==",
1878
+ "release-receipt.json": "eyJzdGF0dXMiOiJSRUxFQVNFRCJ9Cg==",
1879
+ "publish-check.json": "eyJzdGF0dXMiOiJQQVNTIn0K",
1880
+ "site/hello-world/1.1.0/release.json": "eyJpZCI6ImhlbGxvLXdvcmxkIiwidmVyc2lvbiI6IjEuMS4wIn0K"
1881
+ }
1882
+ },
1883
+ "expected": "FILE_MISSING"
1884
+ },
1885
+ {
1886
+ "name": "bundle contains an undeclared document",
1887
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJPeDdmVHB6S1dsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
1888
+ "anchors": {
1889
+ "schemaVersion": 1,
1890
+ "environment": "test",
1891
+ "serial": 1,
1892
+ "legacyUnsigned": {
1893
+ "never-enrolled/app": "0.1.0"
1894
+ },
1895
+ "keys": [
1896
+ {
1897
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1898
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1899
+ "publisher": "octocat",
1900
+ "githubOwner": {
1901
+ "login": "octocat",
1902
+ "id": 583231
1903
+ },
1904
+ "notBefore": "2026-10-01T00:00:00Z",
1905
+ "notAfter": "2028-10-01T00:00:00Z",
1906
+ "status": "active",
1907
+ "enrolment": {
1908
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1909
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1910
+ "signatures": [
1911
+ {
1912
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1913
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1914
+ }
1915
+ ]
1916
+ },
1917
+ "review": "public conformance vector"
1918
+ }
1919
+ ]
1920
+ },
1921
+ "context": {
1922
+ "environment": "test",
1923
+ "now": 1791849600000,
1924
+ "expect": {
1925
+ "project": "octocat/hello-world",
1926
+ "repository": "https://github.com/octocat/hello-world",
1927
+ "tag": "v1.1.0",
1928
+ "publicCommit": "1111111111111111111111111111111111111111",
1929
+ "publicTree": "2222222222222222222222222222222222222222",
1930
+ "tagObject": "3333333333333333333333333333333333333333"
1931
+ },
1932
+ "files": {
1933
+ "public-source.tar": "dGFyCg==",
1934
+ "release-receipt.json": "eyJzdGF0dXMiOiJSRUxFQVNFRCJ9Cg==",
1935
+ "publish-check.json": "eyJzdGF0dXMiOiJQQVNTIn0K",
1936
+ "site/hello-world/1.1.0/release.json": "eyJpZCI6ImhlbGxvLXdvcmxkIiwidmVyc2lvbiI6IjEuMS4wIn0K",
1937
+ "site/hello-world/1.1.0/documents/CONTRACT.md": "UHVibGljIGNvbnRyYWN0Lgo=",
1938
+ "site/hello-world/1.1.0/documents/EXTRA.md": "ZXh0cmEK"
1939
+ }
1940
+ },
1941
+ "expected": "FILE_UNDECLARED"
1942
+ },
1943
+ {
1944
+ "name": "bundle contains an unsafe path",
1945
+ "envelope": "eyJwYXlsb2FkVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5ydW5lZGl0cnVuLnJlbGVhc2Utc3RhdGVtZW50LnYxK2pzb24iLCJwYXlsb2FkIjoiZXlKbWFXeGxjeUk2VzNzaWNHRjBhQ0k2SW5CMVlteHBZeTF6YjNWeVkyVXVkR0Z5SWl3aWMyaGhNalUySWpvaVkyWTFaakl6Wmpoak5UUXhNbVpoWXpRMFpqYzBPVFptWmpaall6QmlPRGs1WXpWaU1qWXlaVEUxTWpKa05EQTRPR05qT0RZM01qTTJNamczT1dJNE15SXNJbk5wZW1VaU9qUjlMSHNpY0dGMGFDSTZJbkIxWW14cGMyZ3RZMmhsWTJzdWFuTnZiaUlzSW5Ob1lUSTFOaUk2SWpReU0ySXdZVGswTldFM00yVmpZalZoWWpjME9HTTNZemM1Tm1GbU9UTXlPR0UwTmpNNVltWTJPVEl4WVdZNU9ESmxOekZoWkRBd09USTBaalEyWlRraUxDSnphWHBsSWpveE9IMHNleUp3WVhSb0lqb2ljbVZzWldGelpTMXlaV05sYVhCMExtcHpiMjRpTENKemFHRXlOVFlpT2lJelpHTTNNelkwTnpVNFlURTBaVFl3T1RZelpUUmlaVGd5T0RRellXVTRNR0l3TkRka01qYzFOVGN4TnpkbU16YzRZamxqTVdabVpHTTNNVFZpWmpWaklpd2ljMmw2WlNJNk1qSjlMSHNpY0dGMGFDSTZJbk5wZEdVdmFHVnNiRzh0ZDI5eWJHUXZNUzR4TGpBdlpHOWpkVzFsYm5SekwwTlBUbFJTUVVOVUxtMWtJaXdpYzJoaE1qVTJJam9pTURWbVlXUmhOREJoT1RjMU1UZGhNekkxTm1SbU5tTTFZakZoTldWbFpqSTJNVFUxTmpVNFkySmlZamRqWWpnMk5HSXlPVGM1TldZeE9EaGpabVF5TkNJc0luTnBlbVVpT2pFM2ZTeDdJbkJoZEdnaU9pSnphWFJsTDJobGJHeHZMWGR2Y214a0x6RXVNUzR3TDNKbGJHVmhjMlV1YW5OdmJpSXNJbk5vWVRJMU5pSTZJamczTURkaE9UYzVOalpqWmpsak0yWmpNREkyWmpaaVpXSTJZMkV5WVRZNFpXVXdOV1prTURFMk9ERXpPR1V4WVdWaFpHWXhaRGhtWm1JNVpETmpaVElpTENKemFYcGxJam96T1gxZExDSnBjM04xWldSQmRDSTZJakl3TWpZdE1UQXRNVE5VTURBNk1EQTZNREJhSWl3aWEyVjVTV1FpT2lKMFpYTjBMV1ZrTWpVMU1Ua3RaVGt6TUdZd01qRTBORFE0WVRrM05qQmhabU00WW1RME5qTmtObVF6WXpVaUxDSndjbTlxWldOMElqb2liMk4wYjJOaGRDOW9aV3hzYnkxM2IzSnNaQ0lzSW5CMVlteHBZME52YlcxcGRDSTZJakV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFeE1URXhNVEV4TVRFaUxDSndkV0pzYVdOVWNtVmxJam9pTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1pSXNJbkIxWW14cGMyaGxjaUk2SW05amRHOWpZWFFpTENKeVpYQnZjMmwwYjNKNUlqb2lhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMjlqZEc5allYUXZhR1ZzYkc4dGQyOXliR1FpTENKelkyaGxiV0ZXWlhKemFXOXVJam94TENKMFlXY2lPaUoyTVM0eExqQWlMQ0owWVdkUFltcGxZM1FpT2lJek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpJaXdpZG1WeWMybHZiaUk2SWpFdU1TNHdJbjA9Iiwic2lnbmF0dXJlcyI6W3sia2V5aWQiOiJ0ZXN0LWVkMjU1MTktZTkzMGYwMjE0NDQ4YTk3NjBhZmM4YmQ0NjNkNmQzYzUiLCJzaWciOiJPeDdmVHB6S1dsOElBYlE3ZTliLzlBOVNiZit1NWxIU3h3c3crNm4rL0laNUYxa3VYVUFwc2JpQVg1cFV4bnU5UCszczZHTFltUDZUV3U2YnVrZHNDdz09In1dfQ==",
1946
+ "anchors": {
1947
+ "schemaVersion": 1,
1948
+ "environment": "test",
1949
+ "serial": 1,
1950
+ "legacyUnsigned": {
1951
+ "never-enrolled/app": "0.1.0"
1952
+ },
1953
+ "keys": [
1954
+ {
1955
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1956
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
1957
+ "publisher": "octocat",
1958
+ "githubOwner": {
1959
+ "login": "octocat",
1960
+ "id": 583231
1961
+ },
1962
+ "notBefore": "2026-10-01T00:00:00Z",
1963
+ "notAfter": "2028-10-01T00:00:00Z",
1964
+ "status": "active",
1965
+ "enrolment": {
1966
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
1967
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
1968
+ "signatures": [
1969
+ {
1970
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
1971
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
1972
+ }
1973
+ ]
1974
+ },
1975
+ "review": "public conformance vector"
1976
+ }
1977
+ ]
1978
+ },
1979
+ "context": {
1980
+ "environment": "test",
1981
+ "now": 1791849600000,
1982
+ "expect": {
1983
+ "project": "octocat/hello-world",
1984
+ "repository": "https://github.com/octocat/hello-world",
1985
+ "tag": "v1.1.0",
1986
+ "publicCommit": "1111111111111111111111111111111111111111",
1987
+ "publicTree": "2222222222222222222222222222222222222222",
1988
+ "tagObject": "3333333333333333333333333333333333333333"
1989
+ },
1990
+ "files": {
1991
+ "public-source.tar": "dGFyCg==",
1992
+ "release-receipt.json": "eyJzdGF0dXMiOiJSRUxFQVNFRCJ9Cg==",
1993
+ "publish-check.json": "eyJzdGF0dXMiOiJQQVNTIn0K",
1994
+ "site/hello-world/1.1.0/release.json": "eyJpZCI6ImhlbGxvLXdvcmxkIiwidmVyc2lvbiI6IjEuMS4wIn0K",
1995
+ "site/hello-world/1.1.0/documents/CONTRACT.md": "UHVibGljIGNvbnRyYWN0Lgo=",
1996
+ "site/hello-world/1.1.0/documents/../escape.md": "dW5zYWZlCg=="
1997
+ }
1998
+ },
1999
+ "expected": "PATH_UNSAFE"
2000
+ },
2001
+ {
2002
+ "name": "malformed DSSE envelope",
2003
+ "envelope": "bm90IGFuIGVudmVsb3Bl",
2004
+ "anchors": {
2005
+ "schemaVersion": 1,
2006
+ "environment": "test",
2007
+ "serial": 1,
2008
+ "legacyUnsigned": {
2009
+ "never-enrolled/app": "0.1.0"
2010
+ },
2011
+ "keys": [
2012
+ {
2013
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
2014
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
2015
+ "publisher": "octocat",
2016
+ "githubOwner": {
2017
+ "login": "octocat",
2018
+ "id": 583231
2019
+ },
2020
+ "notBefore": "2026-10-01T00:00:00Z",
2021
+ "notAfter": "2028-10-01T00:00:00Z",
2022
+ "status": "active",
2023
+ "enrolment": {
2024
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
2025
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
2026
+ "signatures": [
2027
+ {
2028
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
2029
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
2030
+ }
2031
+ ]
2032
+ },
2033
+ "review": "public conformance vector"
2034
+ }
2035
+ ]
2036
+ },
2037
+ "context": {
2038
+ "environment": "test",
2039
+ "now": 1791849600000,
2040
+ "expect": {
2041
+ "project": "octocat/hello-world",
2042
+ "repository": "https://github.com/octocat/hello-world",
2043
+ "tag": "v1.1.0",
2044
+ "publicCommit": "1111111111111111111111111111111111111111",
2045
+ "publicTree": "2222222222222222222222222222222222222222",
2046
+ "tagObject": "3333333333333333333333333333333333333333"
2047
+ }
2048
+ },
2049
+ "expected": "ENVELOPE_INVALID"
2050
+ },
2051
+ {
2052
+ "name": "envelope exceeds the 64 KiB limit",
2053
+ "envelope": "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA=",
2054
+ "anchors": {
2055
+ "schemaVersion": 1,
2056
+ "environment": "test",
2057
+ "serial": 1,
2058
+ "legacyUnsigned": {
2059
+ "never-enrolled/app": "0.1.0"
2060
+ },
2061
+ "keys": [
2062
+ {
2063
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
2064
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
2065
+ "publisher": "octocat",
2066
+ "githubOwner": {
2067
+ "login": "octocat",
2068
+ "id": 583231
2069
+ },
2070
+ "notBefore": "2026-10-01T00:00:00Z",
2071
+ "notAfter": "2028-10-01T00:00:00Z",
2072
+ "status": "active",
2073
+ "enrolment": {
2074
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
2075
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
2076
+ "signatures": [
2077
+ {
2078
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
2079
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
2080
+ }
2081
+ ]
2082
+ },
2083
+ "review": "public conformance vector"
2084
+ }
2085
+ ]
2086
+ },
2087
+ "context": {
2088
+ "environment": "test",
2089
+ "now": 1791849600000,
2090
+ "expect": {
2091
+ "project": "octocat/hello-world",
2092
+ "repository": "https://github.com/octocat/hello-world",
2093
+ "tag": "v1.1.0",
2094
+ "publicCommit": "1111111111111111111111111111111111111111",
2095
+ "publicTree": "2222222222222222222222222222222222222222",
2096
+ "tagObject": "3333333333333333333333333333333333333333"
2097
+ }
2098
+ },
2099
+ "expected": "INPUT_TOO_LARGE"
2100
+ },
2101
+ {
2102
+ "name": "unsigned release inside the enrolled publisher floor",
2103
+ "envelope": false,
2104
+ "anchors": {
2105
+ "schemaVersion": 1,
2106
+ "environment": "test",
2107
+ "serial": 1,
2108
+ "legacyUnsigned": {
2109
+ "never-enrolled/app": "0.1.0"
2110
+ },
2111
+ "keys": [
2112
+ {
2113
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
2114
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
2115
+ "publisher": "octocat",
2116
+ "githubOwner": {
2117
+ "login": "octocat",
2118
+ "id": 583231
2119
+ },
2120
+ "notBefore": "2026-10-01T00:00:00Z",
2121
+ "notAfter": "2028-10-01T00:00:00Z",
2122
+ "status": "active",
2123
+ "enrolment": {
2124
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
2125
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
2126
+ "signatures": [
2127
+ {
2128
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
2129
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
2130
+ }
2131
+ ]
2132
+ },
2133
+ "review": "public conformance vector"
2134
+ }
2135
+ ]
2136
+ },
2137
+ "context": {
2138
+ "environment": "test",
2139
+ "now": 1791849600000,
2140
+ "expect": {
2141
+ "project": "octocat/hello-world",
2142
+ "version": "1.1.0",
2143
+ "tag": "v1.1.0"
2144
+ },
2145
+ "unsigned": {
2146
+ "project": "octocat/hello-world",
2147
+ "version": "1.1.0"
2148
+ }
2149
+ },
2150
+ "expected": "UNSIGNED_LEGACY"
2151
+ },
2152
+ {
2153
+ "name": "stripped signature above the enrolled publisher floor",
2154
+ "envelope": false,
2155
+ "anchors": {
2156
+ "schemaVersion": 1,
2157
+ "environment": "test",
2158
+ "serial": 1,
2159
+ "legacyUnsigned": {
2160
+ "never-enrolled/app": "0.1.0"
2161
+ },
2162
+ "keys": [
2163
+ {
2164
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
2165
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
2166
+ "publisher": "octocat",
2167
+ "githubOwner": {
2168
+ "login": "octocat",
2169
+ "id": 583231
2170
+ },
2171
+ "notBefore": "2026-10-01T00:00:00Z",
2172
+ "notAfter": "2028-10-01T00:00:00Z",
2173
+ "status": "active",
2174
+ "enrolment": {
2175
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
2176
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
2177
+ "signatures": [
2178
+ {
2179
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
2180
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
2181
+ }
2182
+ ]
2183
+ },
2184
+ "review": "public conformance vector"
2185
+ }
2186
+ ]
2187
+ },
2188
+ "context": {
2189
+ "environment": "test",
2190
+ "now": 1791849600000,
2191
+ "expect": {
2192
+ "project": "octocat/hello-world",
2193
+ "version": "1.2.0",
2194
+ "tag": "v1.2.0"
2195
+ },
2196
+ "unsigned": {
2197
+ "project": "octocat/hello-world",
2198
+ "version": "1.2.0"
2199
+ }
2200
+ },
2201
+ "expected": "SIGNATURE_MISSING"
2202
+ },
2203
+ {
2204
+ "name": "unsigned release inside the legacy floor for an unenrolled publisher",
2205
+ "envelope": false,
2206
+ "anchors": {
2207
+ "schemaVersion": 1,
2208
+ "environment": "test",
2209
+ "serial": 1,
2210
+ "legacyUnsigned": {
2211
+ "never-enrolled/app": "0.1.0"
2212
+ },
2213
+ "keys": [
2214
+ {
2215
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
2216
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
2217
+ "publisher": "octocat",
2218
+ "githubOwner": {
2219
+ "login": "octocat",
2220
+ "id": 583231
2221
+ },
2222
+ "notBefore": "2026-10-01T00:00:00Z",
2223
+ "notAfter": "2028-10-01T00:00:00Z",
2224
+ "status": "active",
2225
+ "enrolment": {
2226
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
2227
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
2228
+ "signatures": [
2229
+ {
2230
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
2231
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
2232
+ }
2233
+ ]
2234
+ },
2235
+ "review": "public conformance vector"
2236
+ }
2237
+ ]
2238
+ },
2239
+ "context": {
2240
+ "environment": "test",
2241
+ "now": 1791849600000,
2242
+ "expect": {
2243
+ "project": "never-enrolled/app",
2244
+ "version": "0.1.0",
2245
+ "tag": "v0.1.0"
2246
+ },
2247
+ "unsigned": {
2248
+ "project": "never-enrolled/app",
2249
+ "version": "0.1.0"
2250
+ }
2251
+ },
2252
+ "expected": "UNSIGNED_LEGACY"
2253
+ },
2254
+ {
2255
+ "name": "unsigned release outside every legacy floor",
2256
+ "envelope": false,
2257
+ "anchors": {
2258
+ "schemaVersion": 1,
2259
+ "environment": "test",
2260
+ "serial": 1,
2261
+ "legacyUnsigned": {
2262
+ "never-enrolled/app": "0.1.0"
2263
+ },
2264
+ "keys": [
2265
+ {
2266
+ "keyId": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
2267
+ "publicKey": "rZ3f5PGxu+RSh7noE31dHWCdc02eKwwRXtcZpKnljOo=",
2268
+ "publisher": "octocat",
2269
+ "githubOwner": {
2270
+ "login": "octocat",
2271
+ "id": 583231
2272
+ },
2273
+ "notBefore": "2026-10-01T00:00:00Z",
2274
+ "notAfter": "2028-10-01T00:00:00Z",
2275
+ "status": "active",
2276
+ "enrolment": {
2277
+ "payloadType": "application/vnd.runeditrun.key-enrolment.v1+json",
2278
+ "payload": "eyJnaXRodWJPd25lciI6eyJpZCI6NTgzMjMxLCJsb2dpbiI6Im9jdG9jYXQifSwiaXNzdWVkQXQiOiIyMDI2LTEwLTAxVDAwOjAwOjAwWiIsImtleUlkIjoidGVzdC1lZDI1NTE5LWU5MzBmMDIxNDQ0OGE5NzYwYWZjOGJkNDYzZDZkM2M1Iiwibm90QWZ0ZXIiOiIyMDI4LTEwLTAxVDAwOjAwOjAwWiIsIm5vdEJlZm9yZSI6IjIwMjYtMTAtMDFUMDA6MDA6MDBaIiwicHVibGljS2V5IjoiclozZjVQR3h1K1JTaDdub0UzMWRIV0NkYzAyZUt3d1JYdGNacEtubGpPbz0iLCJwdWJsaXNoZXIiOiJvY3RvY2F0Iiwic2NoZW1hVmVyc2lvbiI6MSwidW5zaWduZWRUaHJvdWdoIjp7Im9jdG9jYXQvaGVsbG8td29ybGQiOiIxLjEuMCJ9fQ==",
2279
+ "signatures": [
2280
+ {
2281
+ "keyid": "test-ed25519-e930f0214448a9760afc8bd463d6d3c5",
2282
+ "sig": "HxXaczsMcbPXnSs/0VTqgK8rdiwoYJQi/iybaR7409h+fctu6CpiixL0+rgItusmqcRzo8EnASXpneYV3W2bCQ=="
2283
+ }
2284
+ ]
2285
+ },
2286
+ "review": "public conformance vector"
2287
+ }
2288
+ ]
2289
+ },
2290
+ "context": {
2291
+ "environment": "test",
2292
+ "now": 1791849600000,
2293
+ "expect": {
2294
+ "project": "new-community/app",
2295
+ "version": "1.0.0",
2296
+ "tag": "v1.0.0"
2297
+ },
2298
+ "unsigned": {
2299
+ "project": "new-community/app",
2300
+ "version": "1.0.0"
2301
+ }
2302
+ },
2303
+ "expected": "SIGNATURE_MISSING"
2304
+ }
2305
+ ]