ubid-common 0.1.0

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 (129) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +20 -0
  3. package/dist/ParsingEngine.d.ts +3 -0
  4. package/dist/ParsingEngine.d.ts.map +1 -0
  5. package/dist/ParsingEngine.js +25 -0
  6. package/dist/PublicKeyResolverEngine.d.ts +3 -0
  7. package/dist/PublicKeyResolverEngine.d.ts.map +1 -0
  8. package/dist/PublicKeyResolverEngine.js +24 -0
  9. package/dist/VerifyingEngine.d.ts +3 -0
  10. package/dist/VerifyingEngine.d.ts.map +1 -0
  11. package/dist/VerifyingEngine.js +27 -0
  12. package/dist/credential-parsers/MsoMdocParser.d.ts +6 -0
  13. package/dist/credential-parsers/MsoMdocParser.d.ts.map +1 -0
  14. package/dist/credential-parsers/MsoMdocParser.js +164 -0
  15. package/dist/credential-parsers/SDJWTVCParser.d.ts +6 -0
  16. package/dist/credential-parsers/SDJWTVCParser.d.ts.map +1 -0
  17. package/dist/credential-parsers/SDJWTVCParser.js +214 -0
  18. package/dist/credential-verifiers/MsoMdocVerifier.d.ts +8 -0
  19. package/dist/credential-verifiers/MsoMdocVerifier.d.ts.map +1 -0
  20. package/dist/credential-verifiers/MsoMdocVerifier.js +213 -0
  21. package/dist/credential-verifiers/SDJWTVCValidation.d.ts +52 -0
  22. package/dist/credential-verifiers/SDJWTVCValidation.d.ts.map +1 -0
  23. package/dist/credential-verifiers/SDJWTVCValidation.js +248 -0
  24. package/dist/credential-verifiers/SDJWTVCVerifier.d.ts +15 -0
  25. package/dist/credential-verifiers/SDJWTVCVerifier.d.ts.map +1 -0
  26. package/dist/credential-verifiers/SDJWTVCVerifier.js +394 -0
  27. package/dist/defaultHttpClient.d.ts +3 -0
  28. package/dist/defaultHttpClient.d.ts.map +1 -0
  29. package/dist/defaultHttpClient.js +18 -0
  30. package/dist/error.d.ts +134 -0
  31. package/dist/error.d.ts.map +1 -0
  32. package/dist/error.js +160 -0
  33. package/dist/functions/convertDataUriToImage.d.ts +2 -0
  34. package/dist/functions/convertDataUriToImage.d.ts.map +1 -0
  35. package/dist/functions/convertDataUriToImage.js +38 -0
  36. package/dist/functions/convertOpenid4vciToSdjwtvcClaims.d.ts +5 -0
  37. package/dist/functions/convertOpenid4vciToSdjwtvcClaims.d.ts.map +1 -0
  38. package/dist/functions/convertOpenid4vciToSdjwtvcClaims.js +31 -0
  39. package/dist/functions/convertSdjwtvcToOpenid4vciClaims.d.ts +11 -0
  40. package/dist/functions/convertSdjwtvcToOpenid4vciClaims.d.ts.map +1 -0
  41. package/dist/functions/convertSdjwtvcToOpenid4vciClaims.js +35 -0
  42. package/dist/functions/convertSdjwtvcToOpenid4vciDisplay.d.ts +19 -0
  43. package/dist/functions/convertSdjwtvcToOpenid4vciDisplay.d.ts.map +1 -0
  44. package/dist/functions/convertSdjwtvcToOpenid4vciDisplay.js +56 -0
  45. package/dist/functions/formatDate.d.ts +2 -0
  46. package/dist/functions/formatDate.d.ts.map +1 -0
  47. package/dist/functions/formatDate.js +50 -0
  48. package/dist/functions/index.d.ts +3 -0
  49. package/dist/functions/index.d.ts.map +1 -0
  50. package/dist/functions/index.js +19 -0
  51. package/dist/functions/openID4VCICredentialRendering.d.ts +5 -0
  52. package/dist/functions/openID4VCICredentialRendering.d.ts.map +1 -0
  53. package/dist/functions/openID4VCICredentialRendering.js +93 -0
  54. package/dist/index.d.ts +19 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +35 -0
  57. package/dist/interfaces.d.ts +112 -0
  58. package/dist/interfaces.d.ts.map +1 -0
  59. package/dist/interfaces.js +3 -0
  60. package/dist/rendering.d.ts +3 -0
  61. package/dist/rendering.d.ts.map +1 -0
  62. package/dist/rendering.js +56 -0
  63. package/dist/resolvers/RemoteJwksResolver.d.ts +17 -0
  64. package/dist/resolvers/RemoteJwksResolver.d.ts.map +1 -0
  65. package/dist/resolvers/RemoteJwksResolver.js +138 -0
  66. package/dist/schemas/CredentialConfigurationSupportedSchema.d.ts +710 -0
  67. package/dist/schemas/CredentialConfigurationSupportedSchema.d.ts.map +1 -0
  68. package/dist/schemas/CredentialConfigurationSupportedSchema.js +60 -0
  69. package/dist/schemas/CredentialOfferSchema.d.ts +40 -0
  70. package/dist/schemas/CredentialOfferSchema.d.ts.map +1 -0
  71. package/dist/schemas/CredentialOfferSchema.js +14 -0
  72. package/dist/schemas/OpenidAuthorizationServerMetadataSchema.d.ts +49 -0
  73. package/dist/schemas/OpenidAuthorizationServerMetadataSchema.d.ts.map +1 -0
  74. package/dist/schemas/OpenidAuthorizationServerMetadataSchema.js +21 -0
  75. package/dist/schemas/OpenidCredentialIssuerMetadataSchema.d.ts +1030 -0
  76. package/dist/schemas/OpenidCredentialIssuerMetadataSchema.d.ts.map +1 -0
  77. package/dist/schemas/OpenidCredentialIssuerMetadataSchema.js +35 -0
  78. package/dist/schemas/SdJwtVcPayloadSchema.d.ts +79 -0
  79. package/dist/schemas/SdJwtVcPayloadSchema.d.ts.map +1 -0
  80. package/dist/schemas/SdJwtVcPayloadSchema.js +27 -0
  81. package/dist/schemas/SdJwtVcTypeMetadataSchema.d.ts +930 -0
  82. package/dist/schemas/SdJwtVcTypeMetadataSchema.d.ts.map +1 -0
  83. package/dist/schemas/SdJwtVcTypeMetadataSchema.js +105 -0
  84. package/dist/schemas/index.d.ts +6 -0
  85. package/dist/schemas/index.d.ts.map +1 -0
  86. package/dist/schemas/index.js +22 -0
  87. package/dist/status/TokenStatusListVerifier.d.ts +41 -0
  88. package/dist/status/TokenStatusListVerifier.d.ts.map +1 -0
  89. package/dist/status/TokenStatusListVerifier.js +410 -0
  90. package/dist/trust/AlgorithmPolicy.d.ts +27 -0
  91. package/dist/trust/AlgorithmPolicy.d.ts.map +1 -0
  92. package/dist/trust/AlgorithmPolicy.js +60 -0
  93. package/dist/trust/TrustRegistry.d.ts +49 -0
  94. package/dist/trust/TrustRegistry.d.ts.map +1 -0
  95. package/dist/trust/TrustRegistry.js +114 -0
  96. package/dist/types.d.ts +76 -0
  97. package/dist/types.d.ts.map +1 -0
  98. package/dist/types.js +10 -0
  99. package/dist/utils/escapeSVG.d.ts +2 -0
  100. package/dist/utils/escapeSVG.d.ts.map +1 -0
  101. package/dist/utils/escapeSVG.js +18 -0
  102. package/dist/utils/getIssuerMetadata.d.ts +8 -0
  103. package/dist/utils/getIssuerMetadata.d.ts.map +1 -0
  104. package/dist/utils/getIssuerMetadata.js +33 -0
  105. package/dist/utils/getSdJwtVcMetadata.d.ts +12 -0
  106. package/dist/utils/getSdJwtVcMetadata.d.ts.map +1 -0
  107. package/dist/utils/getSdJwtVcMetadata.js +274 -0
  108. package/dist/utils/index.d.ts +2 -0
  109. package/dist/utils/index.d.ts.map +1 -0
  110. package/dist/utils/index.js +6 -0
  111. package/dist/utils/matchLocalizedDisplay.d.ts +6 -0
  112. package/dist/utils/matchLocalizedDisplay.d.ts.map +1 -0
  113. package/dist/utils/matchLocalizedDisplay.js +16 -0
  114. package/dist/utils/util.d.ts +6 -0
  115. package/dist/utils/util.d.ts.map +1 -0
  116. package/dist/utils/util.js +53 -0
  117. package/dist/utils/verifyCertificate.d.ts +2 -0
  118. package/dist/utils/verifyCertificate.d.ts.map +1 -0
  119. package/dist/utils/verifyCertificate.js +100 -0
  120. package/dist/utils/verifySRIFromObject.d.ts +10 -0
  121. package/dist/utils/verifySRIFromObject.d.ts.map +1 -0
  122. package/dist/utils/verifySRIFromObject.js +32 -0
  123. package/dist/utils/verifyX5C.d.ts +11 -0
  124. package/dist/utils/verifyX5C.d.ts.map +1 -0
  125. package/dist/utils/verifyX5C.js +19 -0
  126. package/dist/x509/X509ChainVerifier.d.ts +59 -0
  127. package/dist/x509/X509ChainVerifier.d.ts.map +1 -0
  128. package/dist/x509/X509ChainVerifier.js +458 -0
  129. package/package.json +82 -0
package/dist/error.js ADDED
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CredentialRenderingError = exports.PublicKeyResolutionError = exports.X509ChainVerificationError = exports.TokenStatusListVerificationError = exports.CredentialVerificationError = exports.ValidatePresentationRequirementsError = exports.GetMatchingCredentialsError = exports.CredentialParsingWarnings = exports.CredentialParsingError = void 0;
4
+ exports.isCredentialParsingWarnings = isCredentialParsingWarnings;
5
+ var CredentialParsingError;
6
+ (function (CredentialParsingError) {
7
+ CredentialParsingError["CouldNotParse"] = "CouldNotParse";
8
+ CredentialParsingError["InvalidSdJwtVcPayload"] = "InvalidSdJwtVcPayload";
9
+ CredentialParsingError["InvalidDatatype"] = "InvalidDatatype";
10
+ CredentialParsingError["NotSupportedCredentialType"] = "NotSupportedCredentialType";
11
+ CredentialParsingError["HeaderFail"] = "HeaderFail";
12
+ CredentialParsingError["InfiniteRecursion"] = "InfiniteRecursion";
13
+ CredentialParsingError["PayloadFail"] = "PayloadFail";
14
+ CredentialParsingError["VctmDecodeFail"] = "VctmDecodeFail";
15
+ CredentialParsingError["UnknownError"] = "UnknownError";
16
+ CredentialParsingError["NotFound"] = "NotFound";
17
+ CredentialParsingError["NotFoundExtends"] = "NotFoundExtends";
18
+ CredentialParsingError["IntegrityMissing"] = "IntegrityMissing";
19
+ CredentialParsingError["JwtVcIssuerMismatch"] = "JwtVcIssuerMismatch";
20
+ CredentialParsingError["IntegrityFail"] = "IntegrityFail";
21
+ CredentialParsingError["SchemaShapeFail"] = "SchemaShapeFail";
22
+ CredentialParsingError["JwtVcIssuerFail"] = "JwtVcIssuerFail";
23
+ CredentialParsingError["FailFetchIssuerMetadata"] = "FailFetchIssuerMetadata";
24
+ CredentialParsingError["FailSchemaIssuerMetadata"] = "FailSchemaIssuerMetadata";
25
+ })(CredentialParsingError || (exports.CredentialParsingError = CredentialParsingError = {}));
26
+ exports.CredentialParsingWarnings = new Set([
27
+ CredentialParsingError.NotFound,
28
+ CredentialParsingError.NotFoundExtends,
29
+ CredentialParsingError.IntegrityMissing,
30
+ CredentialParsingError.JwtVcIssuerMismatch,
31
+ CredentialParsingError.IntegrityFail,
32
+ CredentialParsingError.JwtVcIssuerFail,
33
+ CredentialParsingError.FailFetchIssuerMetadata,
34
+ CredentialParsingError.FailSchemaIssuerMetadata,
35
+ ]);
36
+ function isCredentialParsingWarnings(code) {
37
+ return exports.CredentialParsingWarnings.has(code);
38
+ }
39
+ var GetMatchingCredentialsError;
40
+ (function (GetMatchingCredentialsError) {
41
+ GetMatchingCredentialsError["PresentationDefinitionParseError"] = "PresentationDefinitionParseError";
42
+ })(GetMatchingCredentialsError || (exports.GetMatchingCredentialsError = GetMatchingCredentialsError = {}));
43
+ var ValidatePresentationRequirementsError;
44
+ (function (ValidatePresentationRequirementsError) {
45
+ ValidatePresentationRequirementsError["PresentationSubmissionParameterIsMissing"] = "PresentationSubmissionParameterIsMissing";
46
+ ValidatePresentationRequirementsError["ConstraintsAreNotSatisfied"] = "ConstraintsAreNotSatisfied";
47
+ ValidatePresentationRequirementsError["PresentationSubmissionParsingFailed"] = "PresentationSubmissionParsingFailed";
48
+ ValidatePresentationRequirementsError["FailedToParseAtLeastOnePresentation"] = "FailedToParseAtLeastOnePresentation";
49
+ ValidatePresentationRequirementsError["InvalidVpToken"] = "InvalidVpToken";
50
+ ValidatePresentationRequirementsError["CredentialParsingError"] = "CredentialParsingError";
51
+ ValidatePresentationRequirementsError["CouldNotFindAssociatedInputDescriptorBasedOnPresentationSubmission"] = "CouldNotFindAssociatedInputDescriptorBasedOnPresentationSubmission";
52
+ ValidatePresentationRequirementsError["CouldNotVerifyParsedCredentialWithInputDescriptor"] = "CouldNotVerifyParsedCredentialWithInputDescriptor";
53
+ ValidatePresentationRequirementsError["UnsupportedFormat"] = "UnsupportedFormat";
54
+ })(ValidatePresentationRequirementsError || (exports.ValidatePresentationRequirementsError = ValidatePresentationRequirementsError = {}));
55
+ var CredentialVerificationError;
56
+ (function (CredentialVerificationError) {
57
+ CredentialVerificationError["UnknownProblem"] = "UnknownProblem";
58
+ CredentialVerificationError["VerificationProcessNotStarted"] = "VerificationProcessNotStarted";
59
+ CredentialVerificationError["InvalidDatatype"] = "InvalidDatatype";
60
+ CredentialVerificationError["InvalidFormat"] = "InvalidFormat";
61
+ CredentialVerificationError["MissingOpts"] = "MissingOpts";
62
+ CredentialVerificationError["InvalidCertificateChain"] = "InvalidCertificateChain";
63
+ CredentialVerificationError["InvalidSignature"] = "InvalidSignature";
64
+ CredentialVerificationError["CannotResolveIssuerPublicKey"] = "CannotResolveIssuerPublicKey";
65
+ CredentialVerificationError["CannotImportIssuerPublicKey"] = "CannotImportIssuerPublicKey";
66
+ CredentialVerificationError["NotTrustedIssuer"] = "NotTrustedIssuer";
67
+ CredentialVerificationError["VctRegistryNotConfigured"] = "VctRegistryNotConfigured";
68
+ CredentialVerificationError["ExpiredCredential"] = "ExpiredCredential";
69
+ CredentialVerificationError["InvalidCredentialHeader"] = "InvalidCredentialHeader";
70
+ CredentialVerificationError["InvalidCredentialPayload"] = "InvalidCredentialPayload";
71
+ CredentialVerificationError["InvalidDisclosures"] = "InvalidDisclosures";
72
+ CredentialVerificationError["UnexpectedIssuer"] = "UnexpectedIssuer";
73
+ CredentialVerificationError["UnexpectedCredentialType"] = "UnexpectedCredentialType";
74
+ CredentialVerificationError["MissingRequiredClaims"] = "MissingRequiredClaims";
75
+ CredentialVerificationError["CannotImportHolderPublicKey"] = "CannotImportHolderPublicKey";
76
+ CredentialVerificationError["CannotExtractHolderPublicKey"] = "CannotExtractHolderPublicKey";
77
+ CredentialVerificationError["HolderKeyAlgorithmMismatch"] = "HolderKeyAlgorithmMismatch";
78
+ // KBJWT related
79
+ CredentialVerificationError["KeyBindingRequired"] = "KeyBindingRequired";
80
+ CredentialVerificationError["KbJwtVerificationFailedHeader"] = "KbJwtVerificationFailedHeader";
81
+ CredentialVerificationError["KbJwtVerificationFailedIat"] = "KbJwtVerificationFailedIat";
82
+ CredentialVerificationError["KbJwtVerificationFailedReplay"] = "KbJwtVerificationFailedReplay";
83
+ CredentialVerificationError["KbJwtVerificationFailedMissingParameters"] = "KbJwtVerificationFailedMissingParameters";
84
+ CredentialVerificationError["KbJwtVerificationFailedWrongSdHash"] = "KbJwtVerificationFailedWrongSdHash";
85
+ CredentialVerificationError["KbJwtVerificationFailedUnexpectedAudience"] = "KbJwtVerificationFailedUnexpectedAudience";
86
+ CredentialVerificationError["KbJwtVerificationFailedUnexpectedNonce"] = "KbJwtVerificationFailedUnexpectedNonce";
87
+ CredentialVerificationError["KbJwtVerificationFailedSignatureValidation"] = "KbJwtVerificationFailedSignatureValidation";
88
+ // Token Status List related
89
+ CredentialVerificationError["CredentialStatusRequired"] = "CredentialStatusRequired";
90
+ CredentialVerificationError["CredentialStatusVerificationFailed"] = "CredentialStatusVerificationFailed";
91
+ CredentialVerificationError["CredentialRevoked"] = "CredentialRevoked";
92
+ CredentialVerificationError["CredentialSuspended"] = "CredentialSuspended";
93
+ CredentialVerificationError["CredentialStatusApplicationSpecific"] = "CredentialStatusApplicationSpecific";
94
+ // MSO MDOC related
95
+ CredentialVerificationError["MsoMdocMissingDeviceKeyInfo"] = "MsoMdocMissingDeviceKeyInfo";
96
+ CredentialVerificationError["MsoMdocInvalidDeviceSignature"] = "MsoMdocInvalidDeviceSignature";
97
+ })(CredentialVerificationError || (exports.CredentialVerificationError = CredentialVerificationError = {}));
98
+ var TokenStatusListVerificationError;
99
+ (function (TokenStatusListVerificationError) {
100
+ TokenStatusListVerificationError["InvalidReference"] = "InvalidReference";
101
+ TokenStatusListVerificationError["StatusListUriNotTrusted"] = "StatusListUriNotTrusted";
102
+ TokenStatusListVerificationError["FetchFailed"] = "FetchFailed";
103
+ TokenStatusListVerificationError["InvalidResponse"] = "InvalidResponse";
104
+ TokenStatusListVerificationError["ResponseTooLarge"] = "ResponseTooLarge";
105
+ TokenStatusListVerificationError["InvalidHeader"] = "InvalidHeader";
106
+ TokenStatusListVerificationError["CannotResolveSigningKey"] = "CannotResolveSigningKey";
107
+ TokenStatusListVerificationError["CannotImportSigningKey"] = "CannotImportSigningKey";
108
+ TokenStatusListVerificationError["InvalidSignature"] = "InvalidSignature";
109
+ TokenStatusListVerificationError["InvalidPayload"] = "InvalidPayload";
110
+ TokenStatusListVerificationError["ExpiredStatusList"] = "ExpiredStatusList";
111
+ TokenStatusListVerificationError["DecompressionFailed"] = "DecompressionFailed";
112
+ TokenStatusListVerificationError["DecompressedListTooLarge"] = "DecompressedListTooLarge";
113
+ TokenStatusListVerificationError["IndexOutOfRange"] = "IndexOutOfRange";
114
+ })(TokenStatusListVerificationError || (exports.TokenStatusListVerificationError = TokenStatusListVerificationError = {}));
115
+ var X509ChainVerificationError;
116
+ (function (X509ChainVerificationError) {
117
+ X509ChainVerificationError["EmptyChain"] = "EmptyChain";
118
+ X509ChainVerificationError["NoTrustAnchors"] = "NoTrustAnchors";
119
+ X509ChainVerificationError["ChainTooLong"] = "ChainTooLong";
120
+ X509ChainVerificationError["ChainTooLarge"] = "ChainTooLarge";
121
+ X509ChainVerificationError["InvalidCertificateEncoding"] = "InvalidCertificateEncoding";
122
+ X509ChainVerificationError["DuplicateCertificate"] = "DuplicateCertificate";
123
+ X509ChainVerificationError["InvalidTrustAnchor"] = "InvalidTrustAnchor";
124
+ X509ChainVerificationError["InvalidChainOrder"] = "InvalidChainOrder";
125
+ X509ChainVerificationError["InvalidValidationTime"] = "InvalidValidationTime";
126
+ X509ChainVerificationError["CertificateNotYetValid"] = "CertificateNotYetValid";
127
+ X509ChainVerificationError["CertificateExpired"] = "CertificateExpired";
128
+ X509ChainVerificationError["WeakCertificateSignature"] = "WeakCertificateSignature";
129
+ X509ChainVerificationError["UnsupportedCriticalExtension"] = "UnsupportedCriticalExtension";
130
+ X509ChainVerificationError["LeafIsCertificateAuthority"] = "LeafIsCertificateAuthority";
131
+ X509ChainVerificationError["InvalidLeafKeyUsage"] = "InvalidLeafKeyUsage";
132
+ X509ChainVerificationError["AlgorithmMismatch"] = "AlgorithmMismatch";
133
+ X509ChainVerificationError["ExtendedKeyUsageMismatch"] = "ExtendedKeyUsageMismatch";
134
+ X509ChainVerificationError["InvalidExpectedHostname"] = "InvalidExpectedHostname";
135
+ X509ChainVerificationError["HostnameMismatch"] = "HostnameMismatch";
136
+ X509ChainVerificationError["InvalidCertificateChain"] = "InvalidCertificateChain";
137
+ X509ChainVerificationError["UntrustedRoot"] = "UntrustedRoot";
138
+ X509ChainVerificationError["CertificateRevoked"] = "CertificateRevoked";
139
+ X509ChainVerificationError["RevocationStatusUnavailable"] = "RevocationStatusUnavailable";
140
+ })(X509ChainVerificationError || (exports.X509ChainVerificationError = X509ChainVerificationError = {}));
141
+ var PublicKeyResolutionError;
142
+ (function (PublicKeyResolutionError) {
143
+ PublicKeyResolutionError["CannotResolvePublicKey"] = "CannotResolvePublicKey";
144
+ PublicKeyResolutionError["IssuerNotTrusted"] = "IssuerNotTrusted";
145
+ PublicKeyResolutionError["MissingKeyIdentifier"] = "MissingKeyIdentifier";
146
+ PublicKeyResolutionError["MissingAlgorithm"] = "MissingAlgorithm";
147
+ PublicKeyResolutionError["AlgorithmNotAllowed"] = "AlgorithmNotAllowed";
148
+ PublicKeyResolutionError["KeyNotFound"] = "KeyNotFound";
149
+ PublicKeyResolutionError["DuplicateKeyIdentifier"] = "DuplicateKeyIdentifier";
150
+ PublicKeyResolutionError["InvalidJwksResponse"] = "InvalidJwksResponse";
151
+ PublicKeyResolutionError["KeyNotAllowed"] = "KeyNotAllowed";
152
+ PublicKeyResolutionError["CredentialTypeNotAllowed"] = "CredentialTypeNotAllowed";
153
+ PublicKeyResolutionError["RemoteJwksFetchFailed"] = "RemoteJwksFetchFailed";
154
+ })(PublicKeyResolutionError || (exports.PublicKeyResolutionError = PublicKeyResolutionError = {}));
155
+ var CredentialRenderingError;
156
+ (function (CredentialRenderingError) {
157
+ CredentialRenderingError["IntegrityCheckFailed"] = "IntegrityCheckFailed";
158
+ CredentialRenderingError["CouldNotFetchSvg"] = "CouldNotFetchSvg";
159
+ })(CredentialRenderingError || (exports.CredentialRenderingError = CredentialRenderingError = {}));
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZ0NBLGtFQUVDO0FBbENELElBQVksc0JBbUJYO0FBbkJELFdBQVksc0JBQXNCO0lBQ2pDLHlEQUErQixDQUFBO0lBQy9CLHlFQUErQyxDQUFBO0lBQy9DLDZEQUFtQyxDQUFBO0lBQ25DLG1GQUF5RCxDQUFBO0lBQ3pELG1EQUF5QixDQUFBO0lBQ3pCLGlFQUF1QyxDQUFBO0lBQ3ZDLHFEQUEyQixDQUFBO0lBQzNCLDJEQUFpQyxDQUFBO0lBQ2pDLHVEQUE2QixDQUFBO0lBQzdCLCtDQUFxQixDQUFBO0lBQ3JCLDZEQUFtQyxDQUFBO0lBQ25DLCtEQUFxQyxDQUFBO0lBQ3JDLHFFQUEyQyxDQUFBO0lBQzNDLHlEQUErQixDQUFBO0lBQy9CLDZEQUFtQyxDQUFBO0lBQ25DLDZEQUFtQyxDQUFBO0lBQ25DLDZFQUFtRCxDQUFBO0lBQ25ELCtFQUFxRCxDQUFBO0FBQ3RELENBQUMsRUFuQlcsc0JBQXNCLHNDQUF0QixzQkFBc0IsUUFtQmpDO0FBRVksUUFBQSx5QkFBeUIsR0FBRyxJQUFJLEdBQUcsQ0FBeUI7SUFDeEUsc0JBQXNCLENBQUMsUUFBUTtJQUMvQixzQkFBc0IsQ0FBQyxlQUFlO0lBQ3RDLHNCQUFzQixDQUFDLGdCQUFnQjtJQUN2QyxzQkFBc0IsQ0FBQyxtQkFBbUI7SUFDMUMsc0JBQXNCLENBQUMsYUFBYTtJQUNwQyxzQkFBc0IsQ0FBQyxlQUFlO0lBQ3RDLHNCQUFzQixDQUFDLHVCQUF1QjtJQUM5QyxzQkFBc0IsQ0FBQyx3QkFBd0I7Q0FDL0MsQ0FBQyxDQUFDO0FBRUgsU0FBZ0IsMkJBQTJCLENBQUMsSUFBNEI7SUFDdkUsT0FBTyxpQ0FBeUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELElBQVksMkJBRVg7QUFGRCxXQUFZLDJCQUEyQjtJQUN0QyxvR0FBcUUs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
@@ -0,0 +1,2 @@
1
+ export declare function convertDataUriToImage(dataUri: string, outputFileName?: string): void;
2
+ //# sourceMappingURL=convertDataUriToImage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertDataUriToImage.d.ts","sourceRoot":"","sources":["../../src/functions/convertDataUriToImage.ts"],"names":[],"mappings":"AAcA,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,SAAiB,QAsBrF"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.convertDataUriToImage = convertDataUriToImage;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const mimeToExt = {
9
+ "image/png": ".png",
10
+ "image/jpeg": ".jpg",
11
+ "image/gif": ".gif",
12
+ "image/svg+xml": ".svg",
13
+ "image/webp": ".webp",
14
+ "image/bmp": ".bmp",
15
+ "image/x-icon": ".ico",
16
+ "image/tiff": ".tiff",
17
+ "image/heif": ".heif"
18
+ };
19
+ function convertDataUriToImage(dataUri, outputFileName = "output-image") {
20
+ const matches = dataUri.match(/^data:([a-zA-Z+\/]+);(?:charset=utf-8;)?(base64,|utf8,|utf-8,)?(.+)$/);
21
+ if (!matches) {
22
+ throw new Error("Invalid Data URI");
23
+ }
24
+ const mimeType = matches[1];
25
+ const encoding = matches[2];
26
+ const data = matches[3];
27
+ const fileExtension = mimeToExt[mimeType] || ".bin";
28
+ let buffer;
29
+ if (encoding === "base64") {
30
+ buffer = Buffer.from(data, "base64");
31
+ }
32
+ else {
33
+ buffer = Buffer.from(decodeURIComponent(data), "utf-8");
34
+ }
35
+ const outputPath = `${outputFileName}${fileExtension}`;
36
+ fs_1.default.writeFileSync(outputPath, buffer);
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydERhdGFVcmlUb0ltYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Z1bmN0aW9ucy9jb252ZXJ0RGF0YVVyaVRvSW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFjQSxzREFzQkM7QUFwQ0QsNENBQW9CO0FBRXBCLE1BQU0sU0FBUyxHQUEyQjtJQUN6QyxXQUFXLEVBQUUsTUFBTTtJQUNuQixZQUFZLEVBQUUsTUFBTTtJQUNwQixXQUFXLEVBQUUsTUFBTTtJQUNuQixlQUFlLEVBQUUsTUFBTTtJQUN2QixZQUFZLEVBQUUsT0FBTztJQUNyQixXQUFXLEVBQUUsTUFBTTtJQUNuQixjQUFjLEVBQUUsTUFBTTtJQUN0QixZQUFZLEVBQUUsT0FBTztJQUNyQixZQUFZLEVBQUUsT0FBTztDQUNyQixDQUFDO0FBRUYsU0FBZ0IscUJBQXFCLENBQUMsT0FBZSxFQUFFLGNBQWMsR0FBRyxjQUFjO0lBQ3JGLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0VBQXNFLENBQUMsQ0FBQztJQUV0RyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXhCLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUM7SUFFcEQsSUFBSSxNQUFjLENBQUM7SUFDbkIsSUFBSSxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDM0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7U0FBTSxDQUFDO1FBQ1AsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLEdBQUcsY0FBYyxHQUFHLGFBQWEsRUFBRSxDQUFDO0lBQ3ZELFlBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDLENBQUMifQ==
@@ -0,0 +1,5 @@
1
+ import { OpenIdClaim } from "../schemas";
2
+ import { ClaimMetadataEntry } from "../schemas/SdJwtVcTypeMetadataSchema";
3
+ export declare function convertOpenid4vciToSdjwtvcClaims(metadataClaims?: OpenIdClaim[] | null): ClaimMetadataEntry[];
4
+ export default convertOpenid4vciToSdjwtvcClaims;
5
+ //# sourceMappingURL=convertOpenid4vciToSdjwtvcClaims.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertOpenid4vciToSdjwtvcClaims.d.ts","sourceRoot":"","sources":["../../src/functions/convertOpenid4vciToSdjwtvcClaims.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAqB,MAAM,sCAAsC,CAAC;AAE7F,wBAAgB,gCAAgC,CAC/C,cAAc,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,GACnC,kBAAkB,EAAE,CA+BtB;AAED,eAAe,gCAAgC,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertOpenid4vciToSdjwtvcClaims = convertOpenid4vciToSdjwtvcClaims;
4
+ function convertOpenid4vciToSdjwtvcClaims(metadataClaims) {
5
+ if (!metadataClaims?.length)
6
+ return [];
7
+ return metadataClaims
8
+ .map((claim) => {
9
+ const normalizedDisplay = (claim.display ?? [])
10
+ .filter((d) => typeof d?.locale === "string" &&
11
+ d.locale.trim().length > 0 &&
12
+ typeof d?.name === "string" &&
13
+ d.name.trim().length > 0)
14
+ .map(d => ({
15
+ locale: d.locale.trim(),
16
+ label: d.name.trim(),
17
+ }));
18
+ // preserve mandatory if present (true OR false), skip if undefined
19
+ const mandatory = Object.prototype.hasOwnProperty.call(claim, "mandatory")
20
+ ? claim.mandatory
21
+ : undefined;
22
+ return {
23
+ path: claim.path,
24
+ ...(normalizedDisplay.length > 0 ? { display: normalizedDisplay } : {}),
25
+ ...(mandatory !== undefined ? { mandatory } : {}),
26
+ };
27
+ })
28
+ .filter((e) => e !== null);
29
+ }
30
+ exports.default = convertOpenid4vciToSdjwtvcClaims;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydE9wZW5pZDR2Y2lUb1Nkand0dmNDbGFpbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnVuY3Rpb25zL2NvbnZlcnRPcGVuaWQ0dmNpVG9TZGp3dHZjQ2xhaW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsNEVBaUNDO0FBakNELFNBQWdCLGdDQUFnQyxDQUMvQyxjQUFxQztJQUVyQyxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU07UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUV2QyxPQUFPLGNBQWM7U0FDbkIsR0FBRyxDQUE0QixDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3pDLE1BQU0saUJBQWlCLEdBQXdCLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7YUFDbEUsTUFBTSxDQUNOLENBQUMsQ0FBQyxFQUF5QyxFQUFFLENBQzVDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sS0FBSyxRQUFRO1lBQzdCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDMUIsT0FBTyxDQUFDLEVBQUUsSUFBSSxLQUFLLFFBQVE7WUFDM0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUN6QjthQUNBLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDVixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDdkIsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1NBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBRUwsbUVBQW1FO1FBQ25FLE1BQU0sU0FBUyxHQUNkLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDO1lBQ3ZELENBQUMsQ0FBRSxLQUFhLENBQUMsU0FBUztZQUMxQixDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWQsT0FBTztZQUNOLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixHQUFHLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLEdBQUcsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDM0IsQ0FBQztJQUN6QixDQUFDLENBQUM7U0FDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQTJCLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUVELGtCQUFlLGdDQUFnQyxDQUFDIn0=
@@ -0,0 +1,11 @@
1
+ import { ClaimMetadataEntry } from "../schemas/SdJwtVcTypeMetadataSchema";
2
+ import { OpenIdClaim } from "../schemas";
3
+ /**
4
+ * Converts SD-JWT VC type-metadata claims to OpenID4VCI claims.
5
+ * - display[].label -> display[].name
6
+ * - preserves mandatory if present
7
+ * - removes undefined fields
8
+ */
9
+ export declare function convertSdjwtvcToOpenid4vciClaims(claims?: ClaimMetadataEntry[] | null): OpenIdClaim[];
10
+ export default convertSdjwtvcToOpenid4vciClaims;
11
+ //# sourceMappingURL=convertSdjwtvcToOpenid4vciClaims.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertSdjwtvcToOpenid4vciClaims.d.ts","sourceRoot":"","sources":["../../src/functions/convertSdjwtvcToOpenid4vciClaims.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAElB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC/C,MAAM,CAAC,EAAE,kBAAkB,EAAE,GAAG,IAAI,GAClC,WAAW,EAAE,CAgCf;AAED,eAAe,gCAAgC,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertSdjwtvcToOpenid4vciClaims = convertSdjwtvcToOpenid4vciClaims;
4
+ /**
5
+ * Converts SD-JWT VC type-metadata claims to OpenID4VCI claims.
6
+ * - display[].label -> display[].name
7
+ * - preserves mandatory if present
8
+ * - removes undefined fields
9
+ */
10
+ function convertSdjwtvcToOpenid4vciClaims(claims) {
11
+ if (!claims?.length)
12
+ return [];
13
+ return claims.map((claim) => {
14
+ // Map display entries
15
+ const display = (claim.display ?? [])
16
+ .filter((d) => typeof d?.locale === "string" &&
17
+ d.locale.trim() !== "" &&
18
+ typeof d?.label === "string" &&
19
+ d.label.trim() !== "")
20
+ .map((d) => ({
21
+ locale: d.locale.trim(),
22
+ name: d.label.trim(),
23
+ }));
24
+ // Only include mandatory if explicitly present (true OR false)
25
+ const hasMandatory = Object.prototype.hasOwnProperty.call(claim, "mandatory");
26
+ const result = {
27
+ path: claim.path,
28
+ ...(display.length > 0 ? { display } : {}),
29
+ ...(hasMandatory ? { mandatory: claim.mandatory } : {}),
30
+ };
31
+ return result;
32
+ });
33
+ }
34
+ exports.default = convertSdjwtvcToOpenid4vciClaims;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydFNkand0dmNUb09wZW5pZDR2Y2lDbGFpbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnVuY3Rpb25zL2NvbnZlcnRTZGp3dHZjVG9PcGVuaWQ0dmNpQ2xhaW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBWUEsNEVBa0NDO0FBeENEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZ0NBQWdDLENBQy9DLE1BQW9DO0lBRXBDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTTtRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRS9CLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBYyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3hDLHNCQUFzQjtRQUN0QixNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO2FBQ25DLE1BQU0sQ0FDTixDQUFDLENBQUMsRUFBMEIsRUFBRSxDQUM3QixPQUFPLENBQUMsRUFBRSxNQUFNLEtBQUssUUFBUTtZQUM3QixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7WUFDdEIsT0FBTyxDQUFDLEVBQUUsS0FBSyxLQUFLLFFBQVE7WUFDNUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQ3RCO2FBQ0EsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ1osTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ3ZCLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtTQUNwQixDQUFDLENBQUMsQ0FBQztRQUVMLCtEQUErRDtRQUMvRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3hELEtBQUssRUFDTCxXQUFXLENBQ1gsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFRO1lBQ25CLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUN2RCxDQUFDO1FBRUYsT0FBTyxNQUFxQixDQUFDO0lBQzlCLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELGtCQUFlLGdDQUFnQyxDQUFDIn0=
@@ -0,0 +1,19 @@
1
+ import type { TypeDisplayEntry } from "../schemas/SdJwtVcTypeMetadataSchema";
2
+ import type { CredentialConfigurationSupported } from "../schemas/CredentialConfigurationSupportedSchema";
3
+ /**
4
+ * Convert SD-JWT VC TypeMetadata.display -> OpenID4VCI CredentialConfigurationSupported.display
5
+ *
6
+ * Notes:
7
+ * - svg_templates are intentionally ignored
8
+ * - We map:
9
+ * - name -> name
10
+ * - description -> description
11
+ * - rendering.simple.background_color -> background_color
12
+ * - rendering.simple.text_color -> text_color
13
+ * - rendering.simple.background_image.uri -> background_image.uri
14
+ * - rendering.simple.logo -> logo
15
+ * - locale -> locale
16
+ *
17
+ */
18
+ export declare function convertSdjwtvcToOpenid4vciDisplay(display?: TypeDisplayEntry[]): CredentialConfigurationSupported["display"];
19
+ //# sourceMappingURL=convertSdjwtvcToOpenid4vciDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertSdjwtvcToOpenid4vciDisplay.d.ts","sourceRoot":"","sources":["../../src/functions/convertSdjwtvcToOpenid4vciDisplay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mDAAmD,CAAC;AAK1G;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iCAAiC,CAChD,OAAO,CAAC,EAAE,gBAAgB,EAAE,GAC1B,gCAAgC,CAAC,SAAS,CAAC,CA2C7C"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertSdjwtvcToOpenid4vciDisplay = convertSdjwtvcToOpenid4vciDisplay;
4
+ /**
5
+ * Convert SD-JWT VC TypeMetadata.display -> OpenID4VCI CredentialConfigurationSupported.display
6
+ *
7
+ * Notes:
8
+ * - svg_templates are intentionally ignored
9
+ * - We map:
10
+ * - name -> name
11
+ * - description -> description
12
+ * - rendering.simple.background_color -> background_color
13
+ * - rendering.simple.text_color -> text_color
14
+ * - rendering.simple.background_image.uri -> background_image.uri
15
+ * - rendering.simple.logo -> logo
16
+ * - locale -> locale
17
+ *
18
+ */
19
+ function convertSdjwtvcToOpenid4vciDisplay(display) {
20
+ if (!display?.length)
21
+ return undefined;
22
+ const byLocale = new Map();
23
+ for (const d of display) {
24
+ const simple = d.rendering?.simple;
25
+ const candidate = {
26
+ name: d.name,
27
+ description: d.description,
28
+ locale: d.locale,
29
+ background_color: simple?.background_color,
30
+ text_color: simple?.text_color,
31
+ ...(simple?.background_image?.uri
32
+ ? { background_image: { uri: simple.background_image.uri } }
33
+ : {}),
34
+ ...(simple?.logo?.uri
35
+ ? {
36
+ logo: {
37
+ uri: simple.logo.uri,
38
+ alt_text: simple.logo.alt_text,
39
+ },
40
+ }
41
+ : {}),
42
+ };
43
+ // remove undefined keys (keeps output tidy)
44
+ for (const key of Object.keys(candidate)) {
45
+ if (candidate[key] === undefined)
46
+ delete candidate[key];
47
+ }
48
+ const existing = byLocale.get(d.locale);
49
+ if (!existing) {
50
+ byLocale.set(d.locale, candidate);
51
+ continue;
52
+ }
53
+ }
54
+ return Array.from(byLocale.values());
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydFNkand0dmNUb09wZW5pZDR2Y2lEaXNwbGF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Z1bmN0aW9ucy9jb252ZXJ0U2Rqd3R2Y1RvT3BlbmlkNHZjaURpc3BsYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFxQkEsOEVBNkNDO0FBNUREOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsU0FBZ0IsaUNBQWlDLENBQ2hELE9BQTRCO0lBRTVCLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBRXZDLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUF3QyxDQUFDO0lBRWpFLEtBQUssTUFBTSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7UUFDekIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUM7UUFFbkMsTUFBTSxTQUFTLEdBQWlDO1lBQy9DLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtZQUNaLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVztZQUMxQixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU07WUFFaEIsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLGdCQUFnQjtZQUMxQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVU7WUFFOUIsR0FBRyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHO2dCQUNoQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQzVELENBQUMsQ0FBQyxFQUFFLENBQUM7WUFFTixHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHO2dCQUNwQixDQUFDLENBQUM7b0JBQ0QsSUFBSSxFQUFFO3dCQUNMLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUc7d0JBQ3BCLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVE7cUJBQzlCO2lCQUNEO2dCQUNELENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDTixDQUFDO1FBRUYsNENBQTRDO1FBQzVDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQTJDLEVBQUUsQ0FBQztZQUNwRixJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTO2dCQUFFLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDbEMsU0FBUztRQUNWLENBQUM7SUFDRixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3RDLENBQUMifQ==
@@ -0,0 +1,2 @@
1
+ export declare function formatDate(value: any, format?: string): any;
2
+ //# sourceMappingURL=formatDate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatDate.d.ts","sourceRoot":"","sources":["../../src/functions/formatDate.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,SAAa,OA2CzD"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatDate = formatDate;
4
+ function formatDate(value, format = 'datetime') {
5
+ // Regex for ISO 8601 format like '2024-10-08T07:28:49.117Z'
6
+ const iso8601Regex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z$/;
7
+ // Regex for simple YYYY-MM-DD format
8
+ const simpleDateRegex = /^\d{4}-\d{2}-\d{2}$/;
9
+ // Regex for long-form date strings like 'Wed Dec 11 2024 14:46:19 GMT+0200'
10
+ const longFormDateRegex = /^[A-Z][a-z]{2} [A-Z][a-z]{2} \d{2} \d{4} \d{2}:\d{2}:\d{2} GMT[+-]\d{4}/;
11
+ let date;
12
+ if (typeof value === 'number' && value.toString().length === 10) {
13
+ // Handle Unix timestamp (seconds) by converting to milliseconds
14
+ date = new Date(value * 1000);
15
+ }
16
+ else if (typeof value === 'string') {
17
+ if (iso8601Regex.test(value)) {
18
+ // Handle ISO 8601 format
19
+ date = new Date(value);
20
+ }
21
+ else if (simpleDateRegex.test(value)) {
22
+ // A date-only value is a civil calendar date, not a UTC instant.
23
+ // Construct it in local time so western time zones do not display
24
+ // the previous day (for example, 2026-07-31 as 30/07/2026 in Chile).
25
+ const [year, month, day] = value.split('-').map(Number);
26
+ date = new Date(year, month - 1, day);
27
+ }
28
+ else if (longFormDateRegex.test(value)) {
29
+ // Handle long-form date string
30
+ date = new Date(value);
31
+ }
32
+ else {
33
+ // Non-date strings, including IDs, are returned as-is
34
+ return value;
35
+ }
36
+ }
37
+ else if (value instanceof Date) {
38
+ // Handle Date objects directly
39
+ date = value;
40
+ }
41
+ else {
42
+ // For unsupported types, return the original value
43
+ return value;
44
+ }
45
+ const options = format === 'datetime'
46
+ ? { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit' }
47
+ : { day: '2-digit', month: '2-digit', year: 'numeric' };
48
+ return date.toLocaleDateString('en-GB', options);
49
+ }
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0RGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mdW5jdGlvbnMvZm9ybWF0RGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGdDQTJDQztBQTNDRCxTQUFnQixVQUFVLENBQUMsS0FBVSxFQUFFLE1BQU0sR0FBRyxVQUFVO0lBQ3pELDREQUE0RDtJQUM1RCxNQUFNLFlBQVksR0FBRyw4Q0FBOEMsQ0FBQztJQUNwRSxxQ0FBcUM7SUFDckMsTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUM7SUFDOUMsNEVBQTRFO0lBQzVFLE1BQU0saUJBQWlCLEdBQUcseUVBQXlFLENBQUM7SUFFcEcsSUFBSSxJQUFJLENBQUM7SUFFVCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ2pFLGdFQUFnRTtRQUNoRSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7U0FBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3RDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlCLHlCQUF5QjtZQUN6QixJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsQ0FBQzthQUFNLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hDLGlFQUFpRTtZQUNqRSxrRUFBa0U7WUFDbEUscUVBQXFFO1lBQ3JFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN2QyxDQUFDO2FBQU0sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQywrQkFBK0I7WUFDL0IsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ1Asc0RBQXNEO1lBQ3RELE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNGLENBQUM7U0FBTSxJQUFJLEtBQUssWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUNsQywrQkFBK0I7UUFDL0IsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNkLENBQUM7U0FBTSxDQUFDO1FBQ1AsbURBQW1EO1FBQ25ELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sS0FBSyxVQUFVO1FBQ3BDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO1FBQzlHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFFekQsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLE9BQWMsQ0FBQyxDQUFDO0FBQ3pELENBQUMifQ==
@@ -0,0 +1,3 @@
1
+ export * from './convertOpenid4vciToSdjwtvcClaims';
2
+ export * from './convertSdjwtvcToOpenid4vciClaims';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/functions/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./convertOpenid4vciToSdjwtvcClaims"), exports);
18
+ __exportStar(require("./convertSdjwtvcToOpenid4vciClaims"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnVuY3Rpb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxRUFBbUQ7QUFDbkQscUVBQW1EIn0=
@@ -0,0 +1,5 @@
1
+ import { HttpClient, OpenID4VCICredentialRendering } from "../interfaces";
2
+ export declare function OpenID4VCICredentialRendering(args: {
3
+ httpClient: HttpClient;
4
+ }): OpenID4VCICredentialRendering;
5
+ //# sourceMappingURL=openID4VCICredentialRendering.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openID4VCICredentialRendering.d.ts","sourceRoot":"","sources":["../../src/functions/openID4VCICredentialRendering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAK1E,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG,6BAA6B,CAsG7G"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenID4VCICredentialRendering = OpenID4VCICredentialRendering;
4
+ const escapeSVG_1 = require("../utils/escapeSVG");
5
+ const formatDate_1 = require("./formatDate");
6
+ function OpenID4VCICredentialRendering(args) {
7
+ const defaultBackgroundColor = "#D3D3D3";
8
+ const defaultTextColor = "#000000";
9
+ const defaultName = "Credential";
10
+ const svgTemplate = `<svg
11
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="829"
12
+ height="504" version="1.1">
13
+ <rect width="100%" height="100%" fill="{{backgroundColor}}" />
14
+ {{backgroundImageBase64}}
15
+ {{logoBase64}}
16
+ <text x="50" y="80" font-family="Arial, Helvetica, sans-serif" font-size="35" fill="{{textColor}}" font-weight="normal">{{name}}</text>
17
+ <text x="50" y="120" font-family="Arial, Helvetica, sans-serif" font-size="20" fill="{{textColor}}" font-weight="normal">{{description}}</text>
18
+ <text x="790" y="431" text-anchor="end" font-family="Arial, Helvetica, sans-serif" font-size="25" fill="{{textColor}}" font-weight="normal">{{expiry_date}}</text>
19
+ </svg>`;
20
+ function formatExpiryDate(signedClaims) {
21
+ if (signedClaims.expiry_date) {
22
+ return (0, formatDate_1.formatDate)(signedClaims.expiry_date, 'date');
23
+ }
24
+ else if (signedClaims.exp != null) {
25
+ const expiryDateISO = new Date(Number(signedClaims.exp) * 1000).toISOString();
26
+ return (0, formatDate_1.formatDate)(expiryDateISO, 'date');
27
+ }
28
+ else {
29
+ return "";
30
+ }
31
+ }
32
+ async function getBase64Image(url) {
33
+ if (!url)
34
+ return null;
35
+ try {
36
+ const isBrowser = typeof window !== "undefined";
37
+ if (isBrowser) {
38
+ // Frontend: Use FileReader with Fetch API
39
+ const response = await fetch(url);
40
+ const blob = await response.blob();
41
+ return new Promise((resolve, reject) => {
42
+ const reader = new FileReader();
43
+ reader.onloadend = () => resolve(reader.result);
44
+ reader.onerror = reject;
45
+ reader.readAsDataURL(blob);
46
+ });
47
+ }
48
+ else {
49
+ // Backend (Node.js): Use Axios or Fetch with Buffer
50
+ const response = await args.httpClient.get(url, {}, { responseType: 'arraybuffer', useCache: true });
51
+ const blob = response.data;
52
+ const base64 = Buffer.from(blob, "binary").toString("base64");
53
+ const mimeType = response.headers["content-type"]; // Get MIME type
54
+ return `data:${mimeType};base64,${base64}`;
55
+ }
56
+ }
57
+ catch (error) {
58
+ console.error("Failed to load image", url, error);
59
+ return null;
60
+ }
61
+ }
62
+ const renderCustomSvgTemplate = async ({ signedClaims, displayConfig }) => {
63
+ const name = displayConfig?.name ? (0, escapeSVG_1.escapeSVG)(displayConfig?.name) : defaultName;
64
+ const description = displayConfig?.description ? (0, escapeSVG_1.escapeSVG)(displayConfig?.description) : "";
65
+ const backgroundColor = displayConfig.backgroundColor || defaultBackgroundColor;
66
+ const textColor = displayConfig.text_color || defaultTextColor;
67
+ const backgroundImageBase64 = displayConfig?.background_image?.uri ?
68
+ displayConfig?.background_image?.uri?.startsWith("data:") ?
69
+ displayConfig?.background_image.uri
70
+ : await getBase64Image(displayConfig?.background_image?.uri)
71
+ : '';
72
+ const logoBase64 = displayConfig?.logo?.uri ? await getBase64Image(displayConfig.logo.uri) : '';
73
+ const expiryDate = formatExpiryDate(signedClaims);
74
+ const replacedSvgText = svgTemplate
75
+ .replace(/{{backgroundColor}}/g, backgroundColor)
76
+ .replace(/{{backgroundImageBase64}}/g, backgroundImageBase64
77
+ ? `<image xlink:href="${backgroundImageBase64}" x="0" y="0" width="100%" height="100%" preserveAspectRatio="xMidYMid slice" />`
78
+ : '')
79
+ .replace(/{{logoBase64}}/g, logoBase64
80
+ ? `<image xlink:href="${logoBase64}" x="50" y="380" height="20%"><title>${displayConfig.logoAltText || 'Logo'}</title></image>`
81
+ : '')
82
+ .replace(/{{name}}/g, name)
83
+ .replace(/{{textColor}}/g, textColor)
84
+ .replace(/{{description}}/g, description)
85
+ .replace(/{{expiry_date}}/g, expiryDate ? `Expiry Date: ${expiryDate}` : '');
86
+ const dataUri = `data:image/svg+xml;utf8,${encodeURIComponent(replacedSvgText)}`;
87
+ return dataUri;
88
+ };
89
+ return {
90
+ renderCustomSvgTemplate,
91
+ };
92
+ }
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbklENFZDSUNyZWRlbnRpYWxSZW5kZXJpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnVuY3Rpb25zL29wZW5JRDRWQ0lDcmVkZW50aWFsUmVuZGVyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0Esc0VBc0dDO0FBekdELGtEQUErQztBQUMvQyw2Q0FBMEM7QUFFMUMsU0FBZ0IsNkJBQTZCLENBQUMsSUFBZ0M7SUFFN0UsTUFBTSxzQkFBc0IsR0FBRyxTQUFTLENBQUM7SUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7SUFDbkMsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDO0lBQ2pDLE1BQU0sV0FBVyxHQUNoQjs7Ozs7Ozs7O1NBU08sQ0FBQTtJQUdSLFNBQVMsZ0JBQWdCLENBQUMsWUFBOEI7UUFDdkQsSUFBSSxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFBLHVCQUFVLEVBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyRCxDQUFDO2FBQU0sSUFBSSxZQUFZLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JDLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDOUUsT0FBTyxJQUFBLHVCQUFVLEVBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLENBQUM7YUFBTSxDQUFDO1lBQ1AsT0FBTyxFQUFFLENBQUM7UUFDWCxDQUFDO0lBQ0YsQ0FBQztJQUdELEtBQUssVUFBVSxjQUFjLENBQUMsR0FBVztRQUN4QyxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXRCLElBQUksQ0FBQztZQUNKLE1BQU0sU0FBUyxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsQ0FBQztZQUVo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