@peculiar/certificates-viewer 4.5.0 → 4.6.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 (449) hide show
  1. package/components/actions.js.map +1 -1
  2. package/components/arrow_top.js.map +1 -1
  3. package/components/attribute-certificate-viewer.js +2 -4
  4. package/components/attribute-certificate-viewer.js.map +1 -1
  5. package/components/attribute.js.map +1 -1
  6. package/components/button-menu.js +1 -3
  7. package/components/button-menu.js.map +1 -1
  8. package/components/button.js +2 -2
  9. package/components/button.js.map +1 -1
  10. package/components/certificate-chain-viewer.js +0 -1
  11. package/components/certificate-chain-viewer.js.map +1 -1
  12. package/components/certificate-viewer.js +3 -8
  13. package/components/certificate-viewer.js.map +1 -1
  14. package/components/circular-progress.js +2 -6
  15. package/components/circular-progress.js.map +1 -1
  16. package/components/crl-viewer.js +0 -2
  17. package/components/crl-viewer.js.map +1 -1
  18. package/components/cross.js.map +1 -1
  19. package/components/csr-viewer.js +0 -4
  20. package/components/csr-viewer.js.map +1 -1
  21. package/components/download.js +32 -19
  22. package/components/download.js.map +1 -1
  23. package/components/highlight-words.js +1 -1
  24. package/components/highlight-words.js.map +1 -1
  25. package/components/index2.js +2 -1
  26. package/components/index2.js.map +1 -1
  27. package/components/issuer_name.js +3 -1
  28. package/components/issuer_name.js.map +1 -1
  29. package/components/miscellaneous.js +15 -16
  30. package/components/miscellaneous.js.map +1 -1
  31. package/components/peculiar-certificate-decoder.js +7 -8
  32. package/components/peculiar-certificate-decoder.js.map +1 -1
  33. package/components/peculiar-certificates-viewer.js +44 -43
  34. package/components/peculiar-certificates-viewer.js.map +1 -1
  35. package/components/peculiar-text-hider.js +1 -1
  36. package/components/peculiar-text-hider.js.map +1 -1
  37. package/components/pkcs10_certificate_request.js.map +1 -1
  38. package/components/read_file.js.map +1 -1
  39. package/components/subject_name.js.map +1 -1
  40. package/dist/cjs/actions-Dl4HXXlI.js.map +1 -1
  41. package/dist/cjs/arrow_top-DBMPHVlB.js.map +1 -1
  42. package/dist/cjs/{button-C5jDF-CZ.js → button-B0CduHSE.js} +4 -4
  43. package/dist/cjs/button-B0CduHSE.js.map +1 -0
  44. package/dist/cjs/{certification_request-DS5FED4F.js → certification_request-DaJSDP3R.js} +33 -20
  45. package/dist/cjs/certification_request-DaJSDP3R.js.map +1 -0
  46. package/dist/cjs/cross-pi7K0cHC.js.map +1 -1
  47. package/dist/cjs/download-D9skkVoT.js.map +1 -1
  48. package/dist/cjs/index.cjs.js +4 -4
  49. package/dist/cjs/{link-CwLq-Nge.js → link-kgbgxxVh.js} +4 -4
  50. package/dist/cjs/link-kgbgxxVh.js.map +1 -0
  51. package/dist/cjs/{miscellaneous-UxtK1SWb.js → miscellaneous-Ce9aGjKB.js} +23 -22
  52. package/dist/cjs/miscellaneous-Ce9aGjKB.js.map +1 -0
  53. package/dist/cjs/peculiar-attribute-certificate-viewer.peculiar-certificate-chain-viewer.peculiar-crl-viewer.peculiar-csr-viewer.entry.cjs.js.map +1 -1
  54. package/dist/cjs/peculiar-attribute-certificate-viewer_4.cjs.entry.js +8 -16
  55. package/dist/cjs/peculiar-attribute-certificate-viewer_4.cjs.entry.js.map +1 -1
  56. package/dist/cjs/peculiar-button-menu.peculiar-circular-progress.peculiar-highlight-words.entry.cjs.js.map +1 -1
  57. package/dist/cjs/peculiar-button-menu_3.cjs.entry.js +5 -11
  58. package/dist/cjs/peculiar-button-menu_3.cjs.entry.js.map +1 -1
  59. package/dist/cjs/peculiar-certificate-decoder.cjs.entry.js +12 -13
  60. package/dist/cjs/peculiar-certificate-decoder.cjs.entry.js.map +1 -1
  61. package/dist/cjs/peculiar-certificate-decoder.entry.cjs.js.map +1 -1
  62. package/dist/cjs/peculiar-certificate-viewer.cjs.entry.js +5 -7
  63. package/dist/cjs/peculiar-certificate-viewer.cjs.entry.js.map +1 -1
  64. package/dist/cjs/peculiar-certificate-viewer.entry.cjs.js.map +1 -1
  65. package/dist/cjs/peculiar-certificates-viewer.cjs.entry.js +47 -46
  66. package/dist/cjs/peculiar-certificates-viewer.cjs.entry.js.map +1 -1
  67. package/dist/cjs/peculiar-certificates-viewer.entry.cjs.js.map +1 -1
  68. package/dist/cjs/peculiar-text-hider.cjs.entry.js +2 -2
  69. package/dist/cjs/peculiar-text-hider.cjs.entry.js.map +1 -1
  70. package/dist/cjs/peculiar-text-hider.entry.cjs.js.map +1 -1
  71. package/dist/cjs/{pkcs10_certificate_request-DaWYvR0i.js → pkcs10_certificate_request-D13Ssi7Z.js} +3 -3
  72. package/dist/cjs/pkcs10_certificate_request-D13Ssi7Z.js.map +1 -0
  73. package/dist/cjs/read_file-DWtcn3zU.js.map +1 -1
  74. package/dist/cjs/{x509_certificate-DBpSGIUT.js → x509_certificate-h5GZArG6.js} +6 -9
  75. package/dist/cjs/x509_certificate-h5GZArG6.js.map +1 -0
  76. package/dist/cjs/{x509_crl-BBnJqOIF.js → x509_crl-CDPt6P1z.js} +6 -6
  77. package/dist/cjs/x509_crl-CDPt6P1z.js.map +1 -0
  78. package/dist/collection/components/attribute-certificate-viewer/attribute-certificate-viewer.js +4 -6
  79. package/dist/collection/components/attribute-certificate-viewer/attribute-certificate-viewer.js.map +1 -1
  80. package/dist/collection/components/button/button.js +3 -3
  81. package/dist/collection/components/button/button.js.map +1 -1
  82. package/dist/collection/components/button/index.js.map +1 -1
  83. package/dist/collection/components/button-menu/button-menu.js +5 -7
  84. package/dist/collection/components/button-menu/button-menu.js.map +1 -1
  85. package/dist/collection/components/certificate-chain-viewer/certificate-chain-viewer.js +1 -2
  86. package/dist/collection/components/certificate-chain-viewer/certificate-chain-viewer.js.map +1 -1
  87. package/dist/collection/components/certificate-decoder/certificate-decoder.js +4 -1
  88. package/dist/collection/components/certificate-decoder/certificate-decoder.js.map +1 -1
  89. package/dist/collection/components/certificate-details-parts/attributes/activity_description_attribute.js.map +1 -1
  90. package/dist/collection/components/certificate-details-parts/attributes/as_string_attribute.js.map +1 -1
  91. package/dist/collection/components/certificate-details-parts/attributes/basic_attribute.js.map +1 -1
  92. package/dist/collection/components/certificate-details-parts/attributes/challenge_password_attribute.js.map +1 -1
  93. package/dist/collection/components/certificate-details-parts/attributes/index.js +1 -1
  94. package/dist/collection/components/certificate-details-parts/attributes/index.js.map +1 -1
  95. package/dist/collection/components/certificate-details-parts/attributes/insurance_value_attribute.js.map +1 -1
  96. package/dist/collection/components/certificate-details-parts/attributes/name_attribute.js.map +1 -1
  97. package/dist/collection/components/certificate-details-parts/attributes/name_part.js +1 -0
  98. package/dist/collection/components/certificate-details-parts/attributes/name_part.js.map +1 -1
  99. package/dist/collection/components/certificate-details-parts/attributes/type_relationship_attribute.js.map +1 -1
  100. package/dist/collection/components/certificate-details-parts/attributes/unstructured_name_attribute.js.map +1 -1
  101. package/dist/collection/components/certificate-details-parts/attributes/valuation_ranking_attribute.js.map +1 -1
  102. package/dist/collection/components/certificate-details-parts/attributes/web_gdpr_attribute.js.map +1 -1
  103. package/dist/collection/components/certificate-details-parts/basic_information.js.map +1 -1
  104. package/dist/collection/components/certificate-details-parts/extensions/archive_rev_info_extension.js.map +1 -1
  105. package/dist/collection/components/certificate-details-parts/extensions/as_string_extension.js.map +1 -1
  106. package/dist/collection/components/certificate-details-parts/extensions/authority_key_identifier_extension.js +1 -1
  107. package/dist/collection/components/certificate-details-parts/extensions/authority_key_identifier_extension.js.map +1 -1
  108. package/dist/collection/components/certificate-details-parts/extensions/basic_constraints_extension.js.map +1 -1
  109. package/dist/collection/components/certificate-details-parts/extensions/basic_extension.js.map +1 -1
  110. package/dist/collection/components/certificate-details-parts/extensions/biometric_syntax_extension.js.map +1 -1
  111. package/dist/collection/components/certificate-details-parts/extensions/ca_version_extension.js.map +1 -1
  112. package/dist/collection/components/certificate-details-parts/extensions/cabforganization_identifier_extension.js +1 -1
  113. package/dist/collection/components/certificate-details-parts/extensions/cabforganization_identifier_extension.js.map +1 -1
  114. package/dist/collection/components/certificate-details-parts/extensions/certificate_policies_extension.js +1 -1
  115. package/dist/collection/components/certificate-details-parts/extensions/certificate_policies_extension.js.map +1 -1
  116. package/dist/collection/components/certificate-details-parts/extensions/certificate_template_extension.js.map +1 -1
  117. package/dist/collection/components/certificate-details-parts/extensions/certificate_transparency_extension.js.map +1 -1
  118. package/dist/collection/components/certificate-details-parts/extensions/crl_distribution_points_extension.js.map +1 -1
  119. package/dist/collection/components/certificate-details-parts/extensions/crl_number_extension.js.map +1 -1
  120. package/dist/collection/components/certificate-details-parts/extensions/crl_reason_extension.js.map +1 -1
  121. package/dist/collection/components/certificate-details-parts/extensions/enroll_cert_type_extension.js.map +1 -1
  122. package/dist/collection/components/certificate-details-parts/extensions/entrust_version_info_extension.js.map +1 -1
  123. package/dist/collection/components/certificate-details-parts/extensions/extended_key_usage_extension.js.map +1 -1
  124. package/dist/collection/components/certificate-details-parts/extensions/general_name_part.js +3 -3
  125. package/dist/collection/components/certificate-details-parts/extensions/general_name_part.js.map +1 -1
  126. package/dist/collection/components/certificate-details-parts/extensions/index.js +2 -2
  127. package/dist/collection/components/certificate-details-parts/extensions/index.js.map +1 -1
  128. package/dist/collection/components/certificate-details-parts/extensions/info_access_syntax_extension.js.map +1 -1
  129. package/dist/collection/components/certificate-details-parts/extensions/issuing_distribution_point_extension.js +0 -1
  130. package/dist/collection/components/certificate-details-parts/extensions/issuing_distribution_point_extension.js.map +1 -1
  131. package/dist/collection/components/certificate-details-parts/extensions/key_description_extension.js +2 -2
  132. package/dist/collection/components/certificate-details-parts/extensions/key_description_extension.js.map +1 -1
  133. package/dist/collection/components/certificate-details-parts/extensions/key_usage_extension.js.map +1 -1
  134. package/dist/collection/components/certificate-details-parts/extensions/lei_extension.js.map +1 -1
  135. package/dist/collection/components/certificate-details-parts/extensions/lei_role_extennsion.js.map +1 -1
  136. package/dist/collection/components/certificate-details-parts/extensions/logotype_extension.js.map +1 -1
  137. package/dist/collection/components/certificate-details-parts/extensions/name_constraints_extension.js.map +1 -1
  138. package/dist/collection/components/certificate-details-parts/extensions/netscape_cert_type_extension.js.map +1 -1
  139. package/dist/collection/components/certificate-details-parts/extensions/netscape_comment_extension.js.map +1 -1
  140. package/dist/collection/components/certificate-details-parts/extensions/policy_constraints_extension.js.map +1 -1
  141. package/dist/collection/components/certificate-details-parts/extensions/policy_mappings_extension.js.map +1 -1
  142. package/dist/collection/components/certificate-details-parts/extensions/private_key_usage_period_extension.js.map +1 -1
  143. package/dist/collection/components/certificate-details-parts/extensions/qc_statements_extension.js.map +1 -1
  144. package/dist/collection/components/certificate-details-parts/extensions/subject_alternative_name_extension.js.map +1 -1
  145. package/dist/collection/components/certificate-details-parts/extensions/subject_directory_attributes_extension.js.map +1 -1
  146. package/dist/collection/components/certificate-details-parts/extensions/subject_key_identifier_extension.js +1 -1
  147. package/dist/collection/components/certificate-details-parts/extensions/subject_key_identifier_extension.js.map +1 -1
  148. package/dist/collection/components/certificate-details-parts/extensions/timestamp_extension.js.map +1 -1
  149. package/dist/collection/components/certificate-details-parts/extensions/tn_auth_list_extension.js.map +1 -1
  150. package/dist/collection/components/certificate-details-parts/holder.js +1 -1
  151. package/dist/collection/components/certificate-details-parts/holder.js.map +1 -1
  152. package/dist/collection/components/certificate-details-parts/issuer.js.map +1 -1
  153. package/dist/collection/components/certificate-details-parts/issuer_name.js +3 -1
  154. package/dist/collection/components/certificate-details-parts/issuer_name.js.map +1 -1
  155. package/dist/collection/components/certificate-details-parts/miscellaneous.js +2 -2
  156. package/dist/collection/components/certificate-details-parts/miscellaneous.js.map +1 -1
  157. package/dist/collection/components/certificate-details-parts/public_key.js +1 -1
  158. package/dist/collection/components/certificate-details-parts/public_key.js.map +1 -1
  159. package/dist/collection/components/certificate-details-parts/revoked_certificates.js +3 -3
  160. package/dist/collection/components/certificate-details-parts/revoked_certificates.js.map +1 -1
  161. package/dist/collection/components/certificate-details-parts/row.js +3 -3
  162. package/dist/collection/components/certificate-details-parts/row.js.map +1 -1
  163. package/dist/collection/components/certificate-details-parts/signature.js +1 -1
  164. package/dist/collection/components/certificate-details-parts/signature.js.map +1 -1
  165. package/dist/collection/components/certificate-details-parts/subject_name.js.map +1 -1
  166. package/dist/collection/components/certificate-details-parts/thumbprints.js.map +1 -1
  167. package/dist/collection/components/certificate-summary/certificate-summary.js.map +1 -1
  168. package/dist/collection/components/certificate-viewer/certificate-viewer.js +5 -7
  169. package/dist/collection/components/certificate-viewer/certificate-viewer.js.map +1 -1
  170. package/dist/collection/components/certificates-viewer/certificates-viewer.js +44 -43
  171. package/dist/collection/components/certificates-viewer/certificates-viewer.js.map +1 -1
  172. package/dist/collection/components/circular-progress/circular-progress.js +2 -6
  173. package/dist/collection/components/circular-progress/circular-progress.js.map +1 -1
  174. package/dist/collection/components/crl-viewer/crl-viewer.js +4 -6
  175. package/dist/collection/components/crl-viewer/crl-viewer.js.map +1 -1
  176. package/dist/collection/components/csr-viewer/csr-viewer.js +4 -8
  177. package/dist/collection/components/csr-viewer/csr-viewer.js.map +1 -1
  178. package/dist/collection/components/highlight-words/highlight-words.js +1 -1
  179. package/dist/collection/components/highlight-words/highlight-words.js.map +1 -1
  180. package/dist/collection/components/icons/actions.js.map +1 -1
  181. package/dist/collection/components/icons/arrow_bottom.js.map +1 -1
  182. package/dist/collection/components/icons/arrow_top.js.map +1 -1
  183. package/dist/collection/components/icons/cross.js.map +1 -1
  184. package/dist/collection/components/icons/details.js.map +1 -1
  185. package/dist/collection/components/icons/download.js.map +1 -1
  186. package/dist/collection/components/icons/link.js.map +1 -1
  187. package/dist/collection/components/link/link.js +1 -1
  188. package/dist/collection/components/link/link.js.map +1 -1
  189. package/dist/collection/components/text-hider/text-hider.js +1 -1
  190. package/dist/collection/components/text-hider/text-hider.js.map +1 -1
  191. package/dist/collection/components/typography/typography.js.map +1 -1
  192. package/dist/collection/constants/oids.js +5 -0
  193. package/dist/collection/constants/oids.js.map +1 -1
  194. package/dist/collection/crypto/asn_data.js +1 -1
  195. package/dist/collection/crypto/asn_data.js.map +1 -1
  196. package/dist/collection/crypto/attribute.js.map +1 -1
  197. package/dist/collection/crypto/extension.js.map +1 -1
  198. package/dist/collection/crypto/name.js.map +1 -1
  199. package/dist/collection/crypto/pem_converter.js +13 -8
  200. package/dist/collection/crypto/pem_converter.js.map +1 -1
  201. package/dist/collection/crypto/pkcs10_certificate_request.js.map +1 -1
  202. package/dist/collection/crypto/provider.js +7 -3
  203. package/dist/collection/crypto/provider.js.map +1 -1
  204. package/dist/collection/crypto/utils.js.map +1 -1
  205. package/dist/collection/crypto/x509_attribute_certificate.js +2 -2
  206. package/dist/collection/crypto/x509_attribute_certificate.js.map +1 -1
  207. package/dist/collection/crypto/x509_certificate.js +3 -6
  208. package/dist/collection/crypto/x509_certificate.js.map +1 -1
  209. package/dist/collection/crypto/x509_certificates.js +3 -7
  210. package/dist/collection/crypto/x509_certificates.js.map +1 -1
  211. package/dist/collection/crypto/x509_crl.js.map +1 -1
  212. package/dist/collection/utils/download.js +1 -0
  213. package/dist/collection/utils/download.js.map +1 -1
  214. package/dist/collection/utils/download_from_buffer.js +3 -3
  215. package/dist/collection/utils/download_from_buffer.js.map +1 -1
  216. package/dist/collection/utils/l10n.js +1 -3
  217. package/dist/collection/utils/l10n.js.map +1 -1
  218. package/dist/collection/utils/read_file.js.map +1 -1
  219. package/dist/esm/actions-DzoPRObK.js.map +1 -1
  220. package/dist/esm/arrow_top-CF9pv-tQ.js.map +1 -1
  221. package/dist/esm/{button-Djn8UI82.js → button-Do0R_8PZ.js} +4 -4
  222. package/dist/esm/button-Do0R_8PZ.js.map +1 -0
  223. package/dist/esm/{certification_request-Wtz6WM17.js → certification_request-DazysL_f.js} +33 -20
  224. package/dist/esm/certification_request-DazysL_f.js.map +1 -0
  225. package/dist/esm/cross-DdCuR1F2.js.map +1 -1
  226. package/dist/esm/download-Cqfc-Sxf.js.map +1 -1
  227. package/dist/esm/index.js +4 -4
  228. package/dist/esm/{link-BfDk078v.js → link-qg3yKAoS.js} +4 -4
  229. package/dist/esm/link-qg3yKAoS.js.map +1 -0
  230. package/dist/esm/{miscellaneous-CsGuJ6zr.js → miscellaneous-BJPX0Hs_.js} +23 -22
  231. package/dist/esm/miscellaneous-BJPX0Hs_.js.map +1 -0
  232. package/dist/esm/peculiar-attribute-certificate-viewer.peculiar-certificate-chain-viewer.peculiar-crl-viewer.peculiar-csr-viewer.entry.js.map +1 -1
  233. package/dist/esm/peculiar-attribute-certificate-viewer_4.entry.js +8 -16
  234. package/dist/esm/peculiar-attribute-certificate-viewer_4.entry.js.map +1 -1
  235. package/dist/esm/peculiar-button-menu.peculiar-circular-progress.peculiar-highlight-words.entry.js.map +1 -1
  236. package/dist/esm/peculiar-button-menu_3.entry.js +5 -11
  237. package/dist/esm/peculiar-button-menu_3.entry.js.map +1 -1
  238. package/dist/esm/peculiar-certificate-decoder.entry.js +12 -13
  239. package/dist/esm/peculiar-certificate-decoder.entry.js.map +1 -1
  240. package/dist/esm/peculiar-certificate-viewer.entry.js +5 -7
  241. package/dist/esm/peculiar-certificate-viewer.entry.js.map +1 -1
  242. package/dist/esm/peculiar-certificates-viewer.entry.js +47 -46
  243. package/dist/esm/peculiar-certificates-viewer.entry.js.map +1 -1
  244. package/dist/esm/peculiar-text-hider.entry.js +2 -2
  245. package/dist/esm/peculiar-text-hider.entry.js.map +1 -1
  246. package/dist/esm/{pkcs10_certificate_request-Cn7_Z7a1.js → pkcs10_certificate_request-SQcYKma2.js} +3 -3
  247. package/dist/esm/pkcs10_certificate_request-SQcYKma2.js.map +1 -0
  248. package/dist/esm/read_file-F2F0McJX.js.map +1 -1
  249. package/dist/esm/{x509_certificate-ObET7_Te.js → x509_certificate-Dmgw53TR.js} +6 -9
  250. package/dist/esm/x509_certificate-Dmgw53TR.js.map +1 -0
  251. package/dist/esm/{x509_crl-CeW7yzP9.js → x509_crl-B5TRu79b.js} +6 -6
  252. package/dist/esm/x509_crl-B5TRu79b.js.map +1 -0
  253. package/dist/esm-es5/actions-DzoPRObK.js.map +1 -1
  254. package/dist/esm-es5/arrow_top-CF9pv-tQ.js.map +1 -1
  255. package/dist/esm-es5/{button-Djn8UI82.js → button-Do0R_8PZ.js} +2 -2
  256. package/dist/esm-es5/button-Do0R_8PZ.js.map +1 -0
  257. package/dist/esm-es5/{certification_request-Wtz6WM17.js → certification_request-DazysL_f.js} +15 -15
  258. package/dist/esm-es5/certification_request-DazysL_f.js.map +1 -0
  259. package/dist/esm-es5/cross-DdCuR1F2.js.map +1 -1
  260. package/dist/esm-es5/download-Cqfc-Sxf.js.map +1 -1
  261. package/dist/esm-es5/index.js +1 -1
  262. package/dist/esm-es5/{link-BfDk078v.js → link-qg3yKAoS.js} +3 -3
  263. package/dist/esm-es5/link-qg3yKAoS.js.map +1 -0
  264. package/dist/esm-es5/{miscellaneous-CsGuJ6zr.js → miscellaneous-BJPX0Hs_.js} +3 -3
  265. package/dist/esm-es5/miscellaneous-BJPX0Hs_.js.map +1 -0
  266. package/dist/esm-es5/peculiar-attribute-certificate-viewer.peculiar-certificate-chain-viewer.peculiar-crl-viewer.peculiar-csr-viewer.entry.js.map +1 -1
  267. package/dist/esm-es5/peculiar-attribute-certificate-viewer_4.entry.js +1 -1
  268. package/dist/esm-es5/peculiar-attribute-certificate-viewer_4.entry.js.map +1 -1
  269. package/dist/esm-es5/peculiar-button-menu.peculiar-circular-progress.peculiar-highlight-words.entry.js.map +1 -1
  270. package/dist/esm-es5/peculiar-button-menu_3.entry.js +1 -1
  271. package/dist/esm-es5/peculiar-button-menu_3.entry.js.map +1 -1
  272. package/dist/esm-es5/peculiar-certificate-decoder.entry.js +1 -1
  273. package/dist/esm-es5/peculiar-certificate-decoder.entry.js.map +1 -1
  274. package/dist/esm-es5/peculiar-certificate-viewer.entry.js +1 -1
  275. package/dist/esm-es5/peculiar-certificate-viewer.entry.js.map +1 -1
  276. package/dist/esm-es5/peculiar-certificates-viewer.entry.js +2 -2
  277. package/dist/esm-es5/peculiar-certificates-viewer.entry.js.map +1 -1
  278. package/dist/esm-es5/peculiar-text-hider.entry.js +1 -1
  279. package/dist/esm-es5/peculiar-text-hider.entry.js.map +1 -1
  280. package/dist/esm-es5/{pkcs10_certificate_request-Cn7_Z7a1.js → pkcs10_certificate_request-SQcYKma2.js} +2 -2
  281. package/dist/esm-es5/pkcs10_certificate_request-SQcYKma2.js.map +1 -0
  282. package/dist/esm-es5/read_file-F2F0McJX.js.map +1 -1
  283. package/dist/esm-es5/{x509_certificate-ObET7_Te.js → x509_certificate-Dmgw53TR.js} +3 -3
  284. package/dist/esm-es5/x509_certificate-Dmgw53TR.js.map +1 -0
  285. package/dist/esm-es5/{x509_crl-CeW7yzP9.js → x509_crl-B5TRu79b.js} +4 -4
  286. package/dist/esm-es5/x509_crl-B5TRu79b.js.map +1 -0
  287. package/dist/peculiar/index.esm.js +1 -1
  288. package/dist/peculiar/p--Pej0I-A.system.js.map +1 -0
  289. package/dist/peculiar/{p-t-yLLnfF.js → p-0HZUc9Ix.js} +3 -3
  290. package/dist/peculiar/p-0HZUc9Ix.js.map +1 -0
  291. package/dist/peculiar/p-15c2b820.entry.js +5 -0
  292. package/dist/peculiar/{p-f4490197.entry.js.map → p-15c2b820.entry.js.map} +1 -1
  293. package/dist/peculiar/{p-5b829829.system.entry.js → p-16aa5600.system.entry.js} +2 -2
  294. package/dist/peculiar/p-16aa5600.system.entry.js.map +1 -0
  295. package/dist/peculiar/{p-3e4062f6.entry.js → p-1cbb0d6b.entry.js} +16 -16
  296. package/dist/peculiar/p-1cbb0d6b.entry.js.map +1 -0
  297. package/dist/peculiar/{p-7a3bf94e.entry.js → p-218364f2.entry.js} +2 -2
  298. package/dist/peculiar/p-218364f2.entry.js.map +1 -0
  299. package/dist/peculiar/{p-B3myni_G.js → p-3zhoLQno.js} +4 -4
  300. package/dist/peculiar/p-3zhoLQno.js.map +1 -0
  301. package/dist/peculiar/{p-63aa01ad.system.entry.js → p-44648a8e.system.entry.js} +3 -3
  302. package/dist/peculiar/p-44648a8e.system.entry.js.map +1 -0
  303. package/dist/peculiar/{p-5608ba3e.system.entry.js → p-52444a44.system.entry.js} +2 -2
  304. package/dist/peculiar/p-52444a44.system.entry.js.map +1 -0
  305. package/dist/peculiar/{p-69b461b4.entry.js → p-5b843427.entry.js} +3 -3
  306. package/dist/peculiar/p-5b843427.entry.js.map +1 -0
  307. package/dist/peculiar/{p-12d2e080.entry.js → p-7b0e7f43.entry.js} +2 -2
  308. package/dist/peculiar/p-7b0e7f43.entry.js.map +1 -0
  309. package/dist/peculiar/p-B2YrZuK2.system.js.map +1 -1
  310. package/dist/peculiar/p-BA8os2l6.system.js.map +1 -0
  311. package/dist/peculiar/p-BAB4EyrL.system.js.map +1 -0
  312. package/dist/peculiar/{p-DPre0WhP.system.js → p-BBZwtkNN.system.js} +4 -4
  313. package/dist/peculiar/p-BBZwtkNN.system.js.map +1 -0
  314. package/dist/peculiar/p-BBgwMHRZ.system.js.map +1 -1
  315. package/dist/peculiar/p-BHBizfwo.js.map +1 -1
  316. package/dist/peculiar/{p-CKoxwzVA.system.js → p-BKKflyKt.system.js} +5 -5
  317. package/dist/peculiar/p-BKKflyKt.system.js.map +1 -0
  318. package/dist/peculiar/p-BOSH9vjy.system.js.map +1 -1
  319. package/dist/peculiar/p-BP2bmYR2.system.js.map +1 -1
  320. package/dist/peculiar/p-BcFnjn1R.system.js.map +1 -0
  321. package/dist/peculiar/{p-uFLk5hDd.system.js → p-BmIps4bV.system.js} +18 -18
  322. package/dist/peculiar/p-BmIps4bV.system.js.map +1 -0
  323. package/dist/peculiar/{p-DgcB4Nqx.system.js → p-CDh6shXP.system.js} +9 -9
  324. package/dist/peculiar/p-CDh6shXP.system.js.map +1 -0
  325. package/dist/peculiar/{p-BisXzAqN.js → p-CEHpBNWe.js} +3 -3
  326. package/dist/peculiar/p-CEHpBNWe.js.map +1 -0
  327. package/dist/peculiar/{p-CttQwkXH.js → p-CJro0Exb.js} +10 -10
  328. package/dist/peculiar/p-CJro0Exb.js.map +1 -0
  329. package/dist/peculiar/p-CWs-Ocvt.system.js.map +1 -0
  330. package/dist/peculiar/p-CeKqQ13Z.js.map +1 -1
  331. package/dist/peculiar/{p-BCATfe_H.js → p-CkwiD_ia.js} +2 -2
  332. package/dist/peculiar/p-CkwiD_ia.js.map +1 -0
  333. package/dist/peculiar/{p-BRhx1gbw.system.js → p-Cm-ylIxb.system.js} +2 -2
  334. package/dist/peculiar/p-Cm-ylIxb.system.js.map +1 -0
  335. package/dist/peculiar/p-D2QB-8Q6.system.js.map +1 -1
  336. package/dist/peculiar/p-D5BWI7FK.system.js +1 -1
  337. package/dist/peculiar/p-DJRm54BZ.system.js.map +1 -0
  338. package/dist/peculiar/{p-L1KL0R34.system.js → p-DRoyzOgk.system.js} +3 -3
  339. package/dist/peculiar/p-DRoyzOgk.system.js.map +1 -0
  340. package/dist/peculiar/{p-Wtz6WM17.js → p-DazysL_f.js} +4 -4
  341. package/dist/peculiar/p-DazysL_f.js.map +1 -0
  342. package/dist/peculiar/p-DhdG07f8.js.map +1 -1
  343. package/dist/peculiar/p-DkAhB3Vy.js.map +1 -1
  344. package/dist/peculiar/{p-lNFxlG5A.js → p-DzItK48Y.js} +4 -4
  345. package/dist/peculiar/p-DzItK48Y.js.map +1 -0
  346. package/dist/peculiar/p-F2F0McJX.js.map +1 -1
  347. package/dist/peculiar/{p-CcANm2qm.system.js → p-YHrZ3f_s.system.js} +2 -2
  348. package/dist/peculiar/p-YHrZ3f_s.system.js.map +1 -0
  349. package/dist/peculiar/p-a3c0f753.system.entry.js +5 -0
  350. package/dist/peculiar/{p-cae95996.system.entry.js.map → p-a3c0f753.system.entry.js.map} +1 -1
  351. package/dist/peculiar/{p-0e8ab957.entry.js → p-ab6a8a44.entry.js} +2 -2
  352. package/dist/peculiar/p-ab6a8a44.entry.js.map +1 -0
  353. package/dist/peculiar/{p-1af57833.system.entry.js → p-d16ddef8.system.entry.js} +2 -2
  354. package/dist/peculiar/p-d16ddef8.system.entry.js.map +1 -0
  355. package/dist/peculiar/{p-bafc3336.system.entry.js → p-d9013293.system.entry.js} +16 -16
  356. package/dist/peculiar/p-d9013293.system.entry.js.map +1 -0
  357. package/dist/peculiar/{p-B859JpGw.system.js → p-wYK0iVYg.system.js} +2 -2
  358. package/dist/peculiar/p-wYK0iVYg.system.js.map +1 -0
  359. package/dist/peculiar/peculiar-attribute-certificate-viewer.peculiar-certificate-chain-viewer.peculiar-crl-viewer.peculiar-csr-viewer.entry.esm.js.map +1 -1
  360. package/dist/peculiar/peculiar-button-menu.peculiar-circular-progress.peculiar-highlight-words.entry.esm.js.map +1 -1
  361. package/dist/peculiar/peculiar-certificate-decoder.entry.esm.js.map +1 -1
  362. package/dist/peculiar/peculiar-certificate-viewer.entry.esm.js.map +1 -1
  363. package/dist/peculiar/peculiar-certificates-viewer.entry.esm.js.map +1 -1
  364. package/dist/peculiar/peculiar-text-hider.entry.esm.js.map +1 -1
  365. package/dist/peculiar/peculiar.esm.js +1 -1
  366. package/dist/types/components/attribute-certificate-viewer/attribute-certificate-viewer.d.ts +3 -3
  367. package/dist/types/components/button/button.d.ts +2 -2
  368. package/dist/types/components/button/index.d.ts +1 -1
  369. package/dist/types/components/button-menu/button-menu.d.ts +5 -5
  370. package/dist/types/components/certificate-details-parts/miscellaneous.d.ts +2 -2
  371. package/dist/types/components/certificate-summary/certificate-summary.d.ts +2 -2
  372. package/dist/types/components/certificate-viewer/certificate-viewer.d.ts +3 -3
  373. package/dist/types/components/certificates-viewer/certificates-viewer.d.ts +3 -2
  374. package/dist/types/components/crl-viewer/crl-viewer.d.ts +3 -3
  375. package/dist/types/components/csr-viewer/csr-viewer.d.ts +3 -3
  376. package/dist/types/components/icons/actions.d.ts +2 -2
  377. package/dist/types/components/icons/arrow_bottom.d.ts +2 -2
  378. package/dist/types/components/icons/arrow_top.d.ts +2 -2
  379. package/dist/types/components/icons/cross.d.ts +2 -2
  380. package/dist/types/components/icons/details.d.ts +2 -2
  381. package/dist/types/components/icons/download.d.ts +2 -2
  382. package/dist/types/components/icons/link.d.ts +2 -2
  383. package/dist/types/components/link/link.d.ts +4 -4
  384. package/dist/types/components/typography/typography.d.ts +5 -5
  385. package/dist/types/components.d.ts +20 -20
  386. package/dist/types/constants/oids.d.ts +5 -0
  387. package/dist/types/crypto/asn_data.d.ts +1 -3
  388. package/dist/types/crypto/pem_converter.d.ts +7 -19
  389. package/dist/types/crypto/provider.d.ts +1 -6
  390. package/dist/types/interface.d.ts +3 -3
  391. package/dist/types/utils/l10n.d.ts +6 -6
  392. package/dist/types/utils/read_file.d.ts +7 -7
  393. package/hydrate/index.js +115 -120
  394. package/hydrate/index.mjs +115 -120
  395. package/package.json +2 -2
  396. package/dist/cjs/button-C5jDF-CZ.js.map +0 -1
  397. package/dist/cjs/certification_request-DS5FED4F.js.map +0 -1
  398. package/dist/cjs/link-CwLq-Nge.js.map +0 -1
  399. package/dist/cjs/miscellaneous-UxtK1SWb.js.map +0 -1
  400. package/dist/cjs/pkcs10_certificate_request-DaWYvR0i.js.map +0 -1
  401. package/dist/cjs/x509_certificate-DBpSGIUT.js.map +0 -1
  402. package/dist/cjs/x509_crl-BBnJqOIF.js.map +0 -1
  403. package/dist/esm/button-Djn8UI82.js.map +0 -1
  404. package/dist/esm/certification_request-Wtz6WM17.js.map +0 -1
  405. package/dist/esm/link-BfDk078v.js.map +0 -1
  406. package/dist/esm/miscellaneous-CsGuJ6zr.js.map +0 -1
  407. package/dist/esm/pkcs10_certificate_request-Cn7_Z7a1.js.map +0 -1
  408. package/dist/esm/x509_certificate-ObET7_Te.js.map +0 -1
  409. package/dist/esm/x509_crl-CeW7yzP9.js.map +0 -1
  410. package/dist/esm-es5/button-Djn8UI82.js.map +0 -1
  411. package/dist/esm-es5/certification_request-Wtz6WM17.js.map +0 -1
  412. package/dist/esm-es5/link-BfDk078v.js.map +0 -1
  413. package/dist/esm-es5/miscellaneous-CsGuJ6zr.js.map +0 -1
  414. package/dist/esm-es5/pkcs10_certificate_request-Cn7_Z7a1.js.map +0 -1
  415. package/dist/esm-es5/x509_certificate-ObET7_Te.js.map +0 -1
  416. package/dist/esm-es5/x509_crl-CeW7yzP9.js.map +0 -1
  417. package/dist/peculiar/p-0e8ab957.entry.js.map +0 -1
  418. package/dist/peculiar/p-12d2e080.entry.js.map +0 -1
  419. package/dist/peculiar/p-1af57833.system.entry.js.map +0 -1
  420. package/dist/peculiar/p-3e4062f6.entry.js.map +0 -1
  421. package/dist/peculiar/p-5608ba3e.system.entry.js.map +0 -1
  422. package/dist/peculiar/p-5b829829.system.entry.js.map +0 -1
  423. package/dist/peculiar/p-63aa01ad.system.entry.js.map +0 -1
  424. package/dist/peculiar/p-69b461b4.entry.js.map +0 -1
  425. package/dist/peculiar/p-7Nmqck4T.system.js.map +0 -1
  426. package/dist/peculiar/p-7a3bf94e.entry.js.map +0 -1
  427. package/dist/peculiar/p-B3myni_G.js.map +0 -1
  428. package/dist/peculiar/p-B859JpGw.system.js.map +0 -1
  429. package/dist/peculiar/p-BCATfe_H.js.map +0 -1
  430. package/dist/peculiar/p-BRhx1gbw.system.js.map +0 -1
  431. package/dist/peculiar/p-BX9qW3ww.system.js.map +0 -1
  432. package/dist/peculiar/p-BisXzAqN.js.map +0 -1
  433. package/dist/peculiar/p-CFhlbr47.system.js.map +0 -1
  434. package/dist/peculiar/p-CKoxwzVA.system.js.map +0 -1
  435. package/dist/peculiar/p-C_vT-OYk.system.js.map +0 -1
  436. package/dist/peculiar/p-CcANm2qm.system.js.map +0 -1
  437. package/dist/peculiar/p-CttQwkXH.js.map +0 -1
  438. package/dist/peculiar/p-DPre0WhP.system.js.map +0 -1
  439. package/dist/peculiar/p-DX5B2Msh.system.js.map +0 -1
  440. package/dist/peculiar/p-DgcB4Nqx.system.js.map +0 -1
  441. package/dist/peculiar/p-Dk86_qlM.system.js.map +0 -1
  442. package/dist/peculiar/p-L1KL0R34.system.js.map +0 -1
  443. package/dist/peculiar/p-Wtz6WM17.js.map +0 -1
  444. package/dist/peculiar/p-bafc3336.system.entry.js.map +0 -1
  445. package/dist/peculiar/p-cae95996.system.entry.js +0 -5
  446. package/dist/peculiar/p-f4490197.entry.js +0 -5
  447. package/dist/peculiar/p-lNFxlG5A.js.map +0 -1
  448. package/dist/peculiar/p-t-yLLnfF.js.map +0 -1
  449. package/dist/peculiar/p-uFLk5hDd.system.js.map +0 -1
package/hydrate/index.js CHANGED
@@ -9544,9 +9544,7 @@ var en = {
9544
9544
  * This source code is licensed under the MIT license found in the
9545
9545
  * LICENSE file in the root directory of this source tree.
9546
9546
  */
9547
- const MESSAGES_ALL = {
9548
- en,
9549
- };
9547
+ const MESSAGES_ALL = { en };
9550
9548
  class Localization {
9551
9549
  constructor() {
9552
9550
  this.setLocale = (locale) => {
@@ -9596,9 +9594,9 @@ const l10n = new Localization();
9596
9594
  */
9597
9595
  function downloadFromBuffer(value, name, extension, mime = 'application/octet-stream') {
9598
9596
  const blob = new Blob([value], { type: mime });
9599
- // @ts-ignore
9600
- if (navigator.msSaveBlob) { // IE10+ : (has Blob, but not a[download] or URL)
9601
- // @ts-ignore
9597
+ // @ts-expect-error - IE10+ : (has Blob, but not a[download] or URL)
9598
+ if (navigator.msSaveBlob) {
9599
+ // @ts-expect-error - IE10+ : (has Blob, but not a[download] or URL)
9602
9600
  navigator.msSaveBlob(blob, `${name}.${extension}`);
9603
9601
  return new Promise((resolve) => {
9604
9602
  setTimeout(resolve, 100);
@@ -9632,6 +9630,7 @@ function downloadFromBuffer(value, name, extension, mime = 'application/octet-st
9632
9630
  * This source code is licensed under the MIT license found in the
9633
9631
  * LICENSE file in the root directory of this source tree.
9634
9632
  */
9633
+ // eslint-disable-next-line @typescript-eslint/no-extraneous-class
9635
9634
  class Download {
9636
9635
  }
9637
9636
  Download.cert = {
@@ -10915,6 +10914,7 @@ const OIDs = {
10915
10914
  '1.3.6.1.4.1.40869.1.1.22.3': 'TWCAEV policy',
10916
10915
  '1.3.6.1.4.1.13177.10.1.2.2': 'Corporate certificates for Natural Person',
10917
10916
  '1.3.6.1.4.1.37476.9000.64.1': 'Smallstep CA Provisioner ID',
10917
+ '1.3.6.1.5.2.3.4': 'KP Client Authentication',
10918
10918
  '1.3.6.1.5.2.3.5': 'KCD Authentication',
10919
10919
  '1.3.6.1.5.5.7': 'PKIX',
10920
10920
  '1.3.6.1.5.5.7.0.12': 'Attribute Cert',
@@ -10951,6 +10951,7 @@ const OIDs = {
10951
10951
  '1.3.6.1.5.5.7.3.11': 'Sbgp Cert AA Server Auth',
10952
10952
  '1.3.6.1.5.5.7.3.13': 'Eap Over PPP',
10953
10953
  '1.3.6.1.5.5.7.3.14': 'Eap Over LAN',
10954
+ '1.3.6.1.5.5.7.3.21': 'Secure Shell Client',
10954
10955
  '1.3.6.1.5.5.7.3.31': 'Brand Indicator for Message Identification',
10955
10956
  '1.3.6.1.5.5.7.3.46': 'Document Signing',
10956
10957
  '1.3.6.1.5.5.7.4': 'Cmp Information Types',
@@ -11683,6 +11684,7 @@ const OIDs = {
11683
11684
  '2.16.840.1.101.3.2.1.3.3': 'FBCA Medium Policy',
11684
11685
  '2.16.840.1.101.3.2.1.3.4': 'FBCA High Policy',
11685
11686
  '2.16.840.1.101.3.2.1.3.12': 'FBCA Medium Hardware Policy',
11687
+ '2.16.840.1.101.3.2.1.3.13': 'FPKI Common Authentication Policy',
11686
11688
  '2.16.840.1.101.3.2.1.48.1': 'Nist Test Policy1',
11687
11689
  '2.16.840.1.101.3.2.1.48.2': 'Nist Test Policy2',
11688
11690
  '2.16.840.1.101.3.2.1.48.3': 'Nist Test Policy3',
@@ -11731,6 +11733,8 @@ const OIDs = {
11731
11733
  '2.16.840.1.101.3.4.2.4': 'SHA-224',
11732
11734
  '2.16.840.1.101.3.4.3.1': 'DSA with Sha224',
11733
11735
  '2.16.840.1.101.3.4.3.2': 'DSA with Sha256',
11736
+ '2.16.840.1.101.3.6.9.1': 'Personal Identity Verification (PIV) National Agency Check with Inquiries (NACI) indicator',
11737
+ '2.16.840.1.101.3.6.6': 'FASC-N',
11734
11738
  '2.16.840.1.113719.1.2.8': 'Novell Algorithm',
11735
11739
  '2.16.840.1.113719.1.2.8.22': 'DES Cbc IV8',
11736
11740
  '2.16.840.1.113719.1.2.8.23': 'DES Cbc Pad IV8',
@@ -13667,12 +13671,12 @@ var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) ||
13667
13671
  };
13668
13672
  var _AsnData_asn, _AsnData_raw;
13669
13673
  class AsnData {
13674
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
13670
13675
  constructor(...args) {
13671
13676
  _AsnData_asn.set(this, void 0);
13672
13677
  _AsnData_raw.set(this, void 0);
13673
13678
  if (args.length === 1) {
13674
13679
  // asn
13675
- // eslint-disable-next-line prefer-destructuring
13676
13680
  __classPrivateFieldSet(this, _AsnData_asn, args[0], "f");
13677
13681
  __classPrivateFieldSet(this, _AsnData_raw, AsnConvert.serialize(__classPrivateFieldGet(this, _AsnData_asn, "f")), "f");
13678
13682
  }
@@ -13787,13 +13791,13 @@ const rPem = `${rBeginTag}${rEolGroup}(?:((?:${rHeaderKey}: ${rHeaderValue})+))?
13787
13791
  /**
13788
13792
  * Represents PEM Converter.
13789
13793
  */
13794
+ // eslint-disable-next-line @typescript-eslint/no-extraneous-class
13790
13795
  class PemConverter {
13791
13796
  static isPem(data) {
13792
13797
  return typeof data === 'string'
13793
- && new RegExp(rPem, 'g').test(data);
13798
+ && new RegExp(rPem, 'g').test(data.replace(/\r/g, ''));
13794
13799
  }
13795
13800
  static decodeWithHeaders(pem) {
13796
- // eslint-disable-next-line no-param-reassign
13797
13801
  pem = pem.replace(/\r/g, ''); // CRLF -> LF
13798
13802
  const pattern = new RegExp(rPem, 'g');
13799
13803
  const res = [];
@@ -13813,7 +13817,6 @@ class PemConverter {
13813
13817
  if (headersString) {
13814
13818
  const headers = headersString.split(new RegExp(rEolGroup, 'g'));
13815
13819
  let lastHeader = null;
13816
- // eslint-disable-next-line no-restricted-syntax
13817
13820
  for (const header of headers) {
13818
13821
  const [key, value] = header.split(/:(.*)/);
13819
13822
  if (value === undefined) {
@@ -13828,7 +13831,9 @@ class PemConverter {
13828
13831
  if (lastHeader) {
13829
13832
  pemStruct.headers.push(lastHeader);
13830
13833
  }
13831
- lastHeader = { key, value: value.trim() };
13834
+ lastHeader = {
13835
+ key, value: value.trim(),
13836
+ };
13832
13837
  }
13833
13838
  }
13834
13839
  // add last header
@@ -13848,6 +13853,11 @@ class PemConverter {
13848
13853
  const blocks = this.decodeWithHeaders(pem);
13849
13854
  return blocks.map((o) => o.rawData);
13850
13855
  }
13856
+ /**
13857
+ * Encodes a list of raws in PEM format
13858
+ * @param raws A list of raws
13859
+ * @param tag PEM tag
13860
+ */
13851
13861
  static encode(rawData, tag) {
13852
13862
  if (Array.isArray(rawData)) {
13853
13863
  const raws = new Array();
@@ -13864,10 +13874,10 @@ class PemConverter {
13864
13874
  });
13865
13875
  }
13866
13876
  else {
13867
- // encode PemStruct[]
13877
+ // encode IPemStruct[]
13868
13878
  rawData.forEach((element) => {
13869
13879
  if (!('type' in element)) {
13870
- throw new TypeError('Cannot encode array of PemStruct in PEM format. Not all items of the array are PemStrut');
13880
+ throw new TypeError('Cannot encode array of IPemStruct in PEM format. Not all items of the array are PemStrut');
13871
13881
  }
13872
13882
  raws.push(this.encodeStruct(element));
13873
13883
  });
@@ -13875,7 +13885,7 @@ class PemConverter {
13875
13885
  return raws.join('\n');
13876
13886
  }
13877
13887
  if (!tag) {
13878
- throw new Error("Required argument 'tag' is missed");
13888
+ throw new Error('Required argument \'tag\' is missed');
13879
13889
  }
13880
13890
  return this.encodeStruct({
13881
13891
  type: tag,
@@ -13893,7 +13903,6 @@ class PemConverter {
13893
13903
  const res = [];
13894
13904
  res.push(`-----BEGIN ${upperCaseType}-----`);
13895
13905
  if ((_a = pem.headers) === null || _a === void 0 ? void 0 : _a.length) {
13896
- // eslint-disable-next-line no-restricted-syntax
13897
13906
  for (const header of pem.headers) {
13898
13907
  res.push(`${header.key}: ${header.value}`);
13899
13908
  }
@@ -13940,16 +13949,20 @@ PemConverter.AttributeCertificateTag = 'ATTRIBUTE CERTIFICATE';
13940
13949
  */
13941
13950
  class CryptoProvider {
13942
13951
  static isCryptoKeyPair(data) {
13943
- return data && data.privateKey && data.publicKey;
13952
+ return data && typeof data === 'object' && 'privateKey' in data && 'publicKey' in data;
13944
13953
  }
13945
13954
  constructor() {
13946
13955
  this.providers = new Map();
13947
- // @ts-ignore
13956
+ // @ts-expect-error - window.crypto is not typed
13948
13957
  const crypto = window.crypto || window.msCrypto;
13949
13958
  if (typeof crypto !== 'undefined') {
13950
13959
  this.set(CryptoProvider.DEFAULT, crypto);
13951
13960
  }
13952
13961
  }
13962
+ /**
13963
+ * Returns crypto by name
13964
+ * @param key Crypto name
13965
+ */
13953
13966
  get(key = CryptoProvider.DEFAULT) {
13954
13967
  const crypto = this.providers.get(key.toLowerCase());
13955
13968
  if (!crypto) {
@@ -13960,7 +13973,7 @@ class CryptoProvider {
13960
13973
  set(key, value) {
13961
13974
  if (typeof key === 'string') {
13962
13975
  if (!value) {
13963
- throw new TypeError("Argument 'value' is required");
13976
+ throw new TypeError('Argument \'value\' is required');
13964
13977
  }
13965
13978
  this.providers.set(key.toLowerCase(), value);
13966
13979
  }
@@ -14024,13 +14037,13 @@ class X509Certificate extends AsnData {
14024
14037
  const notBefore = tbsCertificate.validity.notBefore.utcTime
14025
14038
  || tbsCertificate.validity.notBefore.generalTime;
14026
14039
  if (!notBefore) {
14027
- throw new Error("Cannot get 'notBefore' value");
14040
+ throw new Error('Cannot get \'notBefore\' value');
14028
14041
  }
14029
14042
  this.notBefore = notBefore;
14030
14043
  const notAfter = tbsCertificate.validity.notAfter.utcTime
14031
14044
  || tbsCertificate.validity.notAfter.generalTime;
14032
14045
  if (!notAfter) {
14033
- throw new Error("Cannot get 'notAfter' value");
14046
+ throw new Error('Cannot get \'notAfter\' value');
14034
14047
  }
14035
14048
  this.notAfter = notAfter;
14036
14049
  this.validity = dateDiff(this.notBefore, this.notAfter);
@@ -14108,10 +14121,7 @@ class X509Certificate extends AsnData {
14108
14121
  }
14109
14122
  for (let i = 0; i < this.issuer.length; i += 1) {
14110
14123
  const name = this.issuer[i];
14111
- if (name.shortName === 'CN') {
14112
- return name.value;
14113
- }
14114
- if (name.shortName === 'E') {
14124
+ if (name.shortName === 'CN' || name.shortName === 'E' || name.shortName === 'O') {
14115
14125
  return name.value;
14116
14126
  }
14117
14127
  }
@@ -15769,12 +15779,12 @@ class X509AttributeCertificate extends AsnData {
15769
15779
  this.version = acinfo.version;
15770
15780
  const notBefore = acinfo.attrCertValidityPeriod.notBeforeTime;
15771
15781
  if (!notBefore) {
15772
- throw new Error("Cannot get 'notBefore' value");
15782
+ throw new Error('Cannot get \'notBefore\' value');
15773
15783
  }
15774
15784
  this.notBefore = notBefore;
15775
15785
  const notAfter = acinfo.attrCertValidityPeriod.notAfterTime;
15776
15786
  if (!notAfter) {
15777
- throw new Error("Cannot get 'notAfter' value");
15787
+ throw new Error('Cannot get \'notAfter\' value');
15778
15788
  }
15779
15789
  this.notAfter = notAfter;
15780
15790
  this.validity = dateDiff(this.notBefore, this.notAfter);
@@ -16070,7 +16080,6 @@ class X509Certificates extends Array {
16070
16080
  if (rawItems.length < 2) {
16071
16081
  throw new Error('Unable to parse string. The array of elements is less than 2');
16072
16082
  }
16073
- // eslint-disable-next-line no-restricted-syntax
16074
16083
  for (const item of rawItems) {
16075
16084
  this.push(new X509Certificate(item));
16076
16085
  }
@@ -16084,12 +16093,9 @@ class X509Certificates extends Array {
16084
16093
  const signedData = new SignedData();
16085
16094
  signedData.version = 1;
16086
16095
  signedData.encapContentInfo.eContentType = id_data;
16087
- signedData.encapContentInfo.eContent = new EncapsulatedContent({
16088
- single: new OctetString(),
16089
- });
16090
- signedData.certificates = new CertificateSet(Array.from(this).map((o) => new CertificateChoices({
16091
- certificate: AsnConvert.parse(o.raw, Certificate),
16092
- })));
16096
+ signedData.encapContentInfo.eContent = new EncapsulatedContent({ single: new OctetString() });
16097
+ signedData.certificates = new CertificateSet(Array.from(this)
16098
+ .map((o) => new CertificateChoices({ certificate: AsnConvert.parse(o.raw, Certificate) })));
16093
16099
  const cms = new ContentInfo({
16094
16100
  contentType: id_signedData,
16095
16101
  content: AsnConvert.serialize(signedData),
@@ -16197,7 +16203,7 @@ const Typography = (props, children) => {
16197
16203
  const Link = (props, children) => {
16198
16204
  const { href, variant, } = props;
16199
16205
  return (hAsync(Typography, { component: "a", variant: variant, color: "secondary",
16200
- // @ts-ignore
16206
+ // @ts-expect-error - href is a string
16201
16207
  href: href, target: "_blank", rel: "noreferrer noopener" }, children));
16202
16208
  };
16203
16209
 
@@ -16244,11 +16250,11 @@ const RowValue = (props) => {
16244
16250
  return (hAsync("tr", null,
16245
16251
  hAsync("td", { colSpan: hasValue ? 1 : 2 },
16246
16252
  hAsync(Typography, { variant: "b2", color: "gray-9" }, name)),
16247
- hasValue && (hAsync("td", { class: {
16248
- monospace,
16249
- } }, (isLink(value.toString()) || href) ? (hAsync(Link, { variant: "b2", href: href || value.toString() }, value)) : (hAsync(Typography, { variant: "b2", color: "black" },
16250
- elementValue,
16251
- extraValue))))));
16253
+ hasValue && (hAsync("td", { class: { monospace } }, (isLink(value.toString()) || href)
16254
+ ? (hAsync(Link, { variant: "b2", href: href || value.toString() }, value))
16255
+ : (hAsync(Typography, { variant: "b2", color: "black" },
16256
+ elementValue,
16257
+ extraValue))))));
16252
16258
  };
16253
16259
 
16254
16260
  /**
@@ -16345,7 +16351,9 @@ const IssuerName = (props) => {
16345
16351
  const { name, issuerDnLink } = props;
16346
16352
  const title = l10n.getString('issuerName');
16347
16353
  return [
16348
- hAsync(RowTitle, { value: issuerDnLink ? (hAsync(Link, { href: issuerDnLink }, title)) : title }),
16354
+ hAsync(RowTitle, { value: issuerDnLink
16355
+ ? (hAsync(Link, { href: issuerDnLink }, title))
16356
+ : title }),
16349
16357
  name.map((n) => (hAsync(RowValue, { name: n.name || n.type, value: n.value }))),
16350
16358
  ];
16351
16359
  };
@@ -16467,7 +16475,7 @@ const ExtendedKeyUsageExtension = (props) => {
16467
16475
  * LICENSE file in the root directory of this source tree.
16468
16476
  */
16469
16477
  const SubjectKeyIdentifierExtension = (props) => {
16470
- const { extension, getSubjectKeyIdChildrenLink, getSubjectKeyIdSiblingsLink } = props;
16478
+ const { extension, getSubjectKeyIdChildrenLink, getSubjectKeyIdSiblingsLink, } = props;
16471
16479
  const keyId = Convert.ToHex(extension.value.buffer);
16472
16480
  const childrenLink = getSubjectKeyIdChildrenLink(keyId);
16473
16481
  const siblingsLink = getSubjectKeyIdSiblingsLink(keyId);
@@ -16492,7 +16500,7 @@ const SubjectKeyIdentifierExtension = (props) => {
16492
16500
  * LICENSE file in the root directory of this source tree.
16493
16501
  */
16494
16502
  const AuthorityKeyIdentifierExtension = (props) => {
16495
- const { extension, getAuthKeyIdParentLink, getAuthKeyIdSiblingsLink } = props;
16503
+ const { extension, getAuthKeyIdParentLink, getAuthKeyIdSiblingsLink, } = props;
16496
16504
  const keyId = Convert.ToHex(extension.value.keyIdentifier.buffer);
16497
16505
  const parentLink = getAuthKeyIdParentLink(keyId);
16498
16506
  const siblingsLink = getAuthKeyIdSiblingsLink(keyId);
@@ -16528,7 +16536,7 @@ const names = {
16528
16536
  registeredID: 'Registered ID',
16529
16537
  };
16530
16538
  const GeneralNamePart = (props) => {
16531
- const { generalName, getDNSNameLink, getIPAddressLink } = props;
16539
+ const { generalName, getDNSNameLink, getIPAddressLink, } = props;
16532
16540
  if (!generalName) {
16533
16541
  return null;
16534
16542
  }
@@ -16545,7 +16553,7 @@ const GeneralNamePart = (props) => {
16545
16553
  const text = AsnParser.parse(value.value, DisplayText);
16546
16554
  return (hAsync(RowValue, { name: OIDs[value.typeId] || value.typeId, value: text.toString() }));
16547
16555
  }
16548
- catch (error) {
16556
+ catch (_a) {
16549
16557
  //
16550
16558
  }
16551
16559
  try {
@@ -16554,7 +16562,7 @@ const GeneralNamePart = (props) => {
16554
16562
  return (hAsync(RowValue, { name: OIDs[value.typeId] || value.typeId, value: text.explicitText.toString() }));
16555
16563
  }
16556
16564
  }
16557
- catch (error) {
16565
+ catch (_b) {
16558
16566
  //
16559
16567
  }
16560
16568
  return (hAsync(RowValue, { name: OIDs[value.typeId] || value.typeId, value: Convert.ToHex(value.value), monospace: true }));
@@ -17284,7 +17292,6 @@ const CRLNumberExtension = (props) => {
17284
17292
  * This source code is licensed under the MIT license found in the
17285
17293
  * LICENSE file in the root directory of this source tree.
17286
17294
  */
17287
- // eslint-disable-next-line max-len
17288
17295
  const IssuingDistributionPointExtension = (props) => {
17289
17296
  var _a;
17290
17297
  const { extension } = props;
@@ -17342,14 +17349,14 @@ const KeyDescriptionExtension = (props) => {
17342
17349
  ];
17343
17350
  }
17344
17351
  }
17345
- catch (error) {
17352
+ catch (_a) {
17346
17353
  //
17347
17354
  }
17348
17355
  }
17349
17356
  try {
17350
17357
  value = Convert.ToString(keyValue);
17351
17358
  }
17352
- catch (error) {
17359
+ catch (_b) {
17353
17360
  value = Convert.ToHex(keyValue);
17354
17361
  }
17355
17362
  break;
@@ -17512,7 +17519,7 @@ const Extensions = (props) => {
17512
17519
  }
17513
17520
  return (hAsync(BasicExtension, { extension: extension }));
17514
17521
  }
17515
- catch (error) {
17522
+ catch (_a) {
17516
17523
  console.error('Error render extension:', extension.asn.extnID);
17517
17524
  return null;
17518
17525
  }
@@ -17545,6 +17552,7 @@ const BasicAttribute = (props, children) => {
17545
17552
  * This source code is licensed under the MIT license found in the
17546
17553
  * LICENSE file in the root directory of this source tree.
17547
17554
  */
17555
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17548
17556
  const NamePart = (props) => {
17549
17557
  const { name } = props;
17550
17558
  if (!name) {
@@ -17746,7 +17754,7 @@ const Attributes = (props) => {
17746
17754
  }
17747
17755
  return (hAsync(BasicAttribute, { attribute: attribute }));
17748
17756
  }
17749
- catch (error) {
17757
+ catch (_a) {
17750
17758
  console.error('Error render attribute:', attribute.asn.type);
17751
17759
  return null;
17752
17760
  }
@@ -17765,12 +17773,12 @@ const Button = (props, children) => {
17765
17773
  const { href, class: classProp, startIcon, onClick, } = props;
17766
17774
  const isLink = !!href;
17767
17775
  const TagType = isLink ? 'a' : 'button';
17768
- return (hAsync(TagType, { type: !isLink && 'button', href: isLink && href, target: isLink && '_blank', rel: isLink && 'noreferrer noopener', onClick: onClick, class: {
17776
+ return (hAsync(TagType, { type: !isLink && 'button', href: isLink && href, target: isLink && '_blank', rel: isLink && 'noreferrer noopener', class: {
17769
17777
  button: true,
17770
17778
  // eslint-disable-next-line react/destructuring-assignment
17771
17779
  m_no_padding: children.length === 0,
17772
17780
  [classProp]: Boolean(classProp),
17773
- } },
17781
+ }, onClick: onClick },
17774
17782
  startIcon,
17775
17783
  children.length > 0 && (hAsync(Typography, { variant: "b3", color: "black", component: "span" }, children))));
17776
17784
  };
@@ -17879,10 +17887,10 @@ const Miscellaneous = (props) => {
17879
17887
  hAsync(RowTitle, { value: l10n.getString('miscellaneous') }),
17880
17888
  hAsync("tr", null,
17881
17889
  hAsync("td", null,
17882
- hAsync(Button, { onClick: () => certificate.downloadAsPEM(), startIcon: hAsync(DownloadIcon, null) }, l10n.getString('download.pem')))),
17890
+ hAsync(Button, { startIcon: hAsync(DownloadIcon, null), onClick: () => certificate.downloadAsPEM() }, l10n.getString('download.pem')))),
17883
17891
  hAsync("tr", null,
17884
17892
  hAsync("td", null,
17885
- hAsync(Button, { onClick: () => certificate.downloadAsDER(), startIcon: hAsync(DownloadIcon, null) }, l10n.getString('download.der')))),
17893
+ hAsync(Button, { startIcon: hAsync(DownloadIcon, null), onClick: () => certificate.downloadAsDER() }, l10n.getString('download.der')))),
17886
17894
  ];
17887
17895
  };
17888
17896
 
@@ -18063,11 +18071,9 @@ class AttributeCertificateViewer {
18063
18071
  }
18064
18072
  }
18065
18073
  }
18066
- // eslint-disable-next-line class-methods-use-this
18067
18074
  renderErrorState() {
18068
18075
  return (hAsync("div", { class: "status_wrapper" }, hAsync(Typography, null, "There was an error decoding this attribute certificate.")));
18069
18076
  }
18070
- // eslint-disable-next-line class-methods-use-this
18071
18077
  renderEmptyState() {
18072
18078
  return (hAsync("div", { class: "status_wrapper" }, hAsync(Typography, null, "There is no attribute certificate available.")));
18073
18079
  }
@@ -18116,9 +18122,7 @@ class ButtonMenu {
18116
18122
  };
18117
18123
  }
18118
18124
  render() {
18119
- return (hAsync(Host, { key: '484c56eb147ee97b4be9d9c0c324a6192be5d1b4', class: {
18120
- is_shown: this.open,
18121
- } }, hAsync(Button, { key: '00b7864c569169633c30a69f26185891ba9c39d1', class: "button_popover", onClick: this.handleClick, startIcon: hAsync(ActionsIcon, null) }), hAsync("div", { key: 'afe0500732f053c8b22c65ec11bd2010546fc5e6', role: "dialog", tabIndex: -1, class: "popover", "aria-hidden": String(this.open) }, this.groups.map((group) => (hAsync("div", { class: "group" }, hAsync(Typography, { variant: "c2", color: "gray-9", class: "group_title" }, group.title), group.options.map((option) => (hAsync(Button, { class: "button_option", startIcon: option.startIcon, href: option.href, onClick: (event) => {
18125
+ return (hAsync(Host, { key: '66dd03eaa8d6e1f6dee3d9782390e094c5804b4a', class: { is_shown: this.open } }, hAsync(Button, { key: 'ba4e5601321b4e778937f6386a8a5220e28f5809', class: "button_popover", startIcon: hAsync(ActionsIcon, null), onClick: this.handleClick }), hAsync("div", { key: 'ed4d374f4a4982a24665e1cb60eaa57428ba0e4e', role: "dialog", tabIndex: -1, class: "popover", "aria-hidden": String(this.open) }, this.groups.map((group) => (hAsync("div", { class: "group" }, hAsync(Typography, { variant: "c2", color: "gray-9", class: "group_title" }, group.title), group.options.map((option) => (hAsync(Button, { class: "button_option", startIcon: option.startIcon, href: option.href, onClick: (event) => {
18122
18126
  event.stopPropagation();
18123
18127
  this.handleClick();
18124
18128
  if (option.onClick) {
@@ -18147,7 +18151,6 @@ class CertificateChainViewer {
18147
18151
  registerInstance(this, hostRef);
18148
18152
  this.selectedCertificateIndex = 0;
18149
18153
  }
18150
- // eslint-disable-next-line class-methods-use-this
18151
18154
  renderEmptyState() {
18152
18155
  return (hAsync("div", { class: "status_wrapper" }, hAsync(Typography, null, "There is no certificates available.")));
18153
18156
  }
@@ -18195,6 +18198,7 @@ class CertificateDecoder {
18195
18198
  this.handleClickClear = () => {
18196
18199
  this.clearValue();
18197
18200
  };
18201
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18198
18202
  this.handleChangeInputFile = async (event) => {
18199
18203
  const element = event.target;
18200
18204
  if (element.files) {
@@ -18205,6 +18209,7 @@ class CertificateDecoder {
18205
18209
  element.value = '';
18206
18210
  }
18207
18211
  };
18212
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18208
18213
  this.handleChangeExample = (event) => {
18209
18214
  if (event.target.value) {
18210
18215
  this.decode(event.target.value);
@@ -18213,6 +18218,7 @@ class CertificateDecoder {
18213
18218
  this.clearValue();
18214
18219
  }
18215
18220
  };
18221
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18216
18222
  this.handleDropFile = async (event) => {
18217
18223
  event.stopPropagation();
18218
18224
  event.preventDefault();
@@ -18277,7 +18283,7 @@ class CertificateDecoder {
18277
18283
  }
18278
18284
  render() {
18279
18285
  var _a;
18280
- return (hAsync(Host, { key: '466ae73c347d305938c8b5f7a9ca0fcc8ec000eb' }, hAsync("textarea", { key: '00d3552d847823c1e4e10162c5ac22de48062c47', placeholder: "Certificate DER or PEM", class: "textarea t-b2 c-black", ref: (el) => { this.inputPaste = el; }, onDrop: this.handleDropFile }), hAsync("div", { key: '2b45a534e3db2d4c879efcc849f439d494ad5adc', class: "controls" }, hAsync("div", { key: 'c78db2ec219c7417c10c8aa4b99e72e1fc16499d', class: "control_row" }, hAsync(Typography, { key: '9e72c34b567870083b68fdaf082aae28f8899b24', variant: "b3", color: "secondary-tint-2" }, "Drag or load file:"), hAsync("input", { key: '7069e5db2f0de85126b4fdcace19e181ab407a16', type: "file", accept: "application/pkix-cert,application/x-x509-ca-cert,application/x-x509-user-cert,application/pkcs10,application/pkix-crl,.csr,.req,.crl", onChange: this.handleChangeInputFile, value: "" })), ((_a = this.certificateExamples) === null || _a === void 0 ? void 0 : _a.length) && (hAsync("div", { key: 'e184a0864d8432e1f0aa26788e58f3c336abc598', class: "control_row" }, hAsync(Typography, { key: '19e3213a14ef0b24bb110df7a4e943bf1f2a8ebf', variant: "b3", color: "secondary-tint-2" }, "Load examples:"), hAsync("select", { key: '79082619d5d4bc82cf90afddf58ec58a5ae232b7', onChange: this.handleChangeExample }, hAsync("option", { key: 'add23975d376914239389b621bd956bcd4fb52eb', value: "" }, "None"), this.certificateExamples.map((example) => (hAsync("option", { value: example.value }, example.title)))))), hAsync("div", { key: '876ccefd3125618d5c1e7c83e277349fa78da802', class: "control_row" }, hAsync(Button, { key: 'bb890810c0895ba3fdcc22695e72cd8c2cf9645d', onClick: this.handleClickDecode }, "Decode"), hAsync(Button, { key: 'dadc94b3e9e2e7211d993d99c127abfc8e593545', onClick: this.handleClickClear }, "Clear"))), this.renderCertificate()));
18286
+ return (hAsync(Host, { key: '2c4ec8c59145c494dee26f7e6eae99b10481f091' }, hAsync("textarea", { key: '88129c0b5c56b2458c4af2df6d746c25d4252fd2', placeholder: "Certificate DER or PEM", class: "textarea t-b2 c-black", ref: (el) => { this.inputPaste = el; }, onDrop: this.handleDropFile }), hAsync("div", { key: '3730b1bade8d27bb9bc1617018dc5bf01f9277ef', class: "controls" }, hAsync("div", { key: 'b803986ab6d5bfaf5e61cd9df57428e6bff6bb55', class: "control_row" }, hAsync(Typography, { key: 'e6ed2ea27f11d0957da4109e19483cd040febb01', variant: "b3", color: "secondary-tint-2" }, "Drag or load file:"), hAsync("input", { key: '898d0fdd1de5f204337ab8bf77ad1dafd25da882', type: "file", accept: "application/pkix-cert,application/x-x509-ca-cert,application/x-x509-user-cert,application/pkcs10,application/pkix-crl,.csr,.req,.crl", value: "", onChange: this.handleChangeInputFile })), ((_a = this.certificateExamples) === null || _a === void 0 ? void 0 : _a.length) && (hAsync("div", { key: 'd6cf99bfc145f44fdfef32e52eb6afa8ec3836cf', class: "control_row" }, hAsync(Typography, { key: '4f7ff1b34fe34837909e328afdf401a5826d89f5', variant: "b3", color: "secondary-tint-2" }, "Load examples:"), hAsync("select", { key: '47c7433eefc2e82fb5dd9a30f062cc71104f7f5b', onChange: this.handleChangeExample }, hAsync("option", { key: '667a68723f7a22b954c1c89e1e86b85ddc6b4fd5', value: "" }, "None"), this.certificateExamples.map((example) => (hAsync("option", { value: example.value }, example.title)))))), hAsync("div", { key: 'e1fc1f00e7bb998d26a818fee955df9561f8e6c0', class: "control_row" }, hAsync(Button, { key: '254fdd5ff25e644ba5d233d9cec2508a28e023c9', onClick: this.handleClickDecode }, "Decode"), hAsync(Button, { key: '594d6e51c56a1b51440f6495eb85af0eda75bcef', onClick: this.handleClickClear }, "Clear"))), this.renderCertificate()));
18281
18287
  }
18282
18288
  static get style() { return certificateDecoderCss; }
18283
18289
  static get cmpMeta() { return {
@@ -18376,11 +18382,9 @@ class CertificateViewer {
18376
18382
  getIssuerDnLink() {
18377
18383
  return this.issuerDnLink;
18378
18384
  }
18379
- // eslint-disable-next-line class-methods-use-this
18380
18385
  renderErrorState() {
18381
18386
  return (hAsync("div", { class: "status_wrapper" }, hAsync(Typography, null, "There was an error decoding this certificate.")));
18382
18387
  }
18383
- // eslint-disable-next-line class-methods-use-this
18384
18388
  renderEmptyState() {
18385
18389
  return (hAsync("div", { class: "status_wrapper" }, hAsync(Typography, null, "There is no certificate available.")));
18386
18390
  }
@@ -18491,7 +18495,8 @@ class CertificatesViewer {
18491
18495
  this.detailsClose.emit();
18492
18496
  };
18493
18497
  this.handleSearch = (event) => {
18494
- this.search = event.target.value.trim();
18498
+ const target = event.target;
18499
+ this.search = target.value.trim();
18495
18500
  };
18496
18501
  }
18497
18502
  handleMediaQueryChange(event) {
@@ -18517,7 +18522,6 @@ class CertificatesViewer {
18517
18522
  return;
18518
18523
  }
18519
18524
  const data = [];
18520
- // eslint-disable-next-line no-restricted-syntax
18521
18525
  for (const certificate of this.certificates) {
18522
18526
  try {
18523
18527
  const decoded = new X509Certificate(certificate.value);
@@ -18539,13 +18543,17 @@ class CertificatesViewer {
18539
18543
  this.isDecodeInProcess = false;
18540
18544
  this.certificatesDecoded = data;
18541
18545
  }
18542
- // eslint-disable-next-line class-methods-use-this
18546
+ getCertificateName(certificate) {
18547
+ if (typeof certificate.name === 'function') {
18548
+ return certificate.name(certificate.body);
18549
+ }
18550
+ return certificate.name || certificate.body.commonName;
18551
+ }
18543
18552
  handleClickDownloadAsPem(certificate) {
18544
- certificate.body.downloadAsPEM(certificate.name || certificate.body.commonName);
18553
+ certificate.body.downloadAsPEM(this.getCertificateName(certificate));
18545
18554
  }
18546
- // eslint-disable-next-line class-methods-use-this
18547
18555
  handleClickDownloadAsDer(certificate) {
18548
- certificate.body.downloadAsDER(certificate.name || certificate.body.commonName);
18556
+ certificate.body.downloadAsDER(this.getCertificateName(certificate));
18549
18557
  }
18550
18558
  handleClickRow(index) {
18551
18559
  const isExpandedRowClicked = this.expandedRow === index;
@@ -18590,26 +18598,34 @@ class CertificatesViewer {
18590
18598
  },
18591
18599
  ],
18592
18600
  },
18593
- ...(isHasTestURLs ? [{
18594
- title: l10n.getString('testURLs'),
18595
- options: [
18596
- ...(((_a = certificate.tests) === null || _a === void 0 ? void 0 : _a.valid) ? [{
18597
- text: l10n.getString('valid'),
18598
- href: certificate.tests.valid,
18599
- startIcon: hAsync(LinkIcon, null),
18600
- }] : []),
18601
- ...(((_b = certificate.tests) === null || _b === void 0 ? void 0 : _b.revoked) ? [{
18602
- text: l10n.getString('revoked'),
18603
- href: certificate.tests.revoked,
18604
- startIcon: hAsync(LinkIcon, null),
18605
- }] : []),
18606
- ...(((_c = certificate.tests) === null || _c === void 0 ? void 0 : _c.expired) ? [{
18607
- text: l10n.getString('expired'),
18608
- href: certificate.tests.expired,
18609
- startIcon: hAsync(LinkIcon, null),
18610
- }] : []),
18611
- ],
18612
- }] : []),
18601
+ ...(isHasTestURLs
18602
+ ? [{
18603
+ title: l10n.getString('testURLs'),
18604
+ options: [
18605
+ ...(((_a = certificate.tests) === null || _a === void 0 ? void 0 : _a.valid)
18606
+ ? [{
18607
+ text: l10n.getString('valid'),
18608
+ href: certificate.tests.valid,
18609
+ startIcon: hAsync(LinkIcon, null),
18610
+ }]
18611
+ : []),
18612
+ ...(((_b = certificate.tests) === null || _b === void 0 ? void 0 : _b.revoked)
18613
+ ? [{
18614
+ text: l10n.getString('revoked'),
18615
+ href: certificate.tests.revoked,
18616
+ startIcon: hAsync(LinkIcon, null),
18617
+ }]
18618
+ : []),
18619
+ ...(((_c = certificate.tests) === null || _c === void 0 ? void 0 : _c.expired)
18620
+ ? [{
18621
+ text: l10n.getString('expired'),
18622
+ href: certificate.tests.expired,
18623
+ startIcon: hAsync(LinkIcon, null),
18624
+ }]
18625
+ : []),
18626
+ ],
18627
+ }]
18628
+ : []),
18613
18629
  ] }));
18614
18630
  }
18615
18631
  renderExpandedRow(certificate) {
@@ -18629,8 +18645,7 @@ class CertificatesViewer {
18629
18645
  const certificateStringForSearch = [
18630
18646
  publicKeyValue,
18631
18647
  certificate.body.issuerCommonName,
18632
- certificate.name,
18633
- certificate.body.commonName,
18648
+ this.getCertificateName(certificate),
18634
18649
  certificate.body.thumbprints['SHA-1'],
18635
18650
  ]
18636
18651
  .join(' ')
@@ -18644,21 +18659,12 @@ class CertificatesViewer {
18644
18659
  hAsync("tr", { class: {
18645
18660
  certificate_row: true,
18646
18661
  m_expanded: isExpandedRow,
18647
- }, key: certificate.body.thumbprints['SHA-1'] }, hAsync("td", null, hAsync("table", null, hAsync("tbody", null, !this.isHasRoots && (hAsync("tr", null, hAsync("td", null, hAsync(Typography, { variant: "b2", color: "gray-9" }, l10n.getString('issuer'))), hAsync("td", null, hAsync(Typography, { variant: "b2", color: "black" }, hAsync("peculiar-highlight-words", { search: searchHighlight }, certificate.body.issuerCommonName))))), hAsync("tr", null, hAsync("td", null, hAsync(Typography, { variant: "b2", color: "gray-9" }, l10n.getString('name'))), hAsync("td", null, hAsync(Typography, { variant: "b2", color: "black" }, hAsync("peculiar-highlight-words", { search: searchHighlight }, certificate.name || certificate.body.commonName)))), hAsync("tr", null, hAsync("td", null, hAsync(Typography, { variant: "b2", color: "gray-9" }, l10n.getString('publicKey'))), hAsync("td", null, hAsync(Typography, { variant: "b2", color: "black" }, hAsync("peculiar-highlight-words", { search: searchHighlight }, publicKeyValue)))), hAsync("tr", null, hAsync("td", null, hAsync(Typography, { variant: "b2", color: "gray-9" }, l10n.getString('fingerprint'), "\u00A0 (SHA-1)")), hAsync("td", null, hAsync(Typography, { variant: "b2", color: "black" }, hAsync("peculiar-highlight-words", { search: searchHighlight }, certificate.body.thumbprints['SHA-1'])))), isExpandedRow && this.renderExpandedRow(certificate.body), hAsync("tr", { class: "certificate_row_actions" }, hAsync("td", null, this.renderCertificateButtonActions(certificate), hAsync(Button
18648
- // eslint-disable-next-line react/jsx-no-bind
18649
- , {
18650
- // eslint-disable-next-line react/jsx-no-bind
18651
- onClick: this.handleClickRow.bind(this, index), startIcon: isExpandedRow ? hAsync(ArrowTopIcon, null) : hAsync(ArrowBottomIcon, null)
18652
- }))))))),
18662
+ }, key: certificate.body.thumbprints['SHA-1'] }, hAsync("td", null, hAsync("table", null, hAsync("tbody", null, !this.isHasRoots && (hAsync("tr", null, hAsync("td", null, hAsync(Typography, { variant: "b2", color: "gray-9" }, l10n.getString('issuer'))), hAsync("td", null, hAsync(Typography, { variant: "b2", color: "black" }, hAsync("peculiar-highlight-words", { search: searchHighlight }, certificate.body.issuerCommonName))))), hAsync("tr", null, hAsync("td", null, hAsync(Typography, { variant: "b2", color: "gray-9" }, l10n.getString('name'))), hAsync("td", null, hAsync(Typography, { variant: "b2", color: "black" }, hAsync("peculiar-highlight-words", { search: searchHighlight }, this.getCertificateName(certificate))))), hAsync("tr", null, hAsync("td", null, hAsync(Typography, { variant: "b2", color: "gray-9" }, l10n.getString('publicKey'))), hAsync("td", null, hAsync(Typography, { variant: "b2", color: "black" }, hAsync("peculiar-highlight-words", { search: searchHighlight }, publicKeyValue)))), hAsync("tr", null, hAsync("td", null, hAsync(Typography, { variant: "b2", color: "gray-9" }, l10n.getString('fingerprint'), "\u00A0 (SHA-1)")), hAsync("td", null, hAsync(Typography, { variant: "b2", color: "black" }, hAsync("peculiar-highlight-words", { search: searchHighlight }, certificate.body.thumbprints['SHA-1'])))), isExpandedRow && this.renderExpandedRow(certificate.body), hAsync("tr", { class: "certificate_row_actions" }, hAsync("td", null, this.renderCertificateButtonActions(certificate), hAsync(Button, { startIcon: isExpandedRow ? hAsync(ArrowTopIcon, null) : hAsync(ArrowBottomIcon, null), onClick: this.handleClickRow.bind(this, index) }))))))),
18653
18663
  ]);
18654
18664
  return;
18655
18665
  }
18656
18666
  content.push([
18657
- hAsync("tr", { class: {
18658
- m_expanded: isExpandedRow,
18659
- }, key: certificate.body.thumbprints['SHA-1'] }, hAsync("td", null, hAsync(Button, { class: "button_table_cell",
18660
- // eslint-disable-next-line react/jsx-no-bind
18661
- onClick: this.handleClickRow.bind(this, index), startIcon: isExpandedRow ? hAsync(ArrowTopIcon, null) : hAsync(ArrowBottomIcon, null) })), !this.isHasRoots && (hAsync("td", null, hAsync(Typography, null, hAsync("peculiar-highlight-words", { search: searchHighlight }, certificate.body.issuerCommonName)))), hAsync("td", null, hAsync(Typography, null, hAsync("peculiar-highlight-words", { search: searchHighlight }, certificate.name || certificate.body.commonName))), hAsync("td", null, hAsync(Typography, null, hAsync("peculiar-highlight-words", { search: searchHighlight }, publicKeyValue))), hAsync("td", null, hAsync(Typography, null, hAsync("peculiar-highlight-words", { search: searchHighlight }, certificate.body.thumbprints['SHA-1']))), hAsync("td", null, this.renderCertificateButtonActions(certificate))),
18667
+ hAsync("tr", { class: { m_expanded: isExpandedRow }, key: certificate.body.thumbprints['SHA-1'] }, hAsync("td", null, hAsync(Button, { startIcon: isExpandedRow ? hAsync(ArrowTopIcon, null) : hAsync(ArrowBottomIcon, null), class: "button_table_cell", onClick: this.handleClickRow.bind(this, index) })), !this.isHasRoots && (hAsync("td", null, hAsync(Typography, null, hAsync("peculiar-highlight-words", { search: searchHighlight }, certificate.body.issuerCommonName)))), hAsync("td", null, hAsync(Typography, null, hAsync("peculiar-highlight-words", { search: searchHighlight }, this.getCertificateName(certificate)))), hAsync("td", null, hAsync(Typography, null, hAsync("peculiar-highlight-words", { search: searchHighlight }, publicKeyValue))), hAsync("td", null, hAsync(Typography, null, hAsync("peculiar-highlight-words", { search: searchHighlight }, certificate.body.thumbprints['SHA-1']))), hAsync("td", null, this.renderCertificateButtonActions(certificate))),
18662
18668
  isExpandedRow && this.renderExpandedRow(certificate.body),
18663
18669
  ]);
18664
18670
  });
@@ -18668,13 +18674,13 @@ class CertificatesViewer {
18668
18674
  if (!this.certificateSelectedForDetails) {
18669
18675
  return null;
18670
18676
  }
18671
- return (hAsync("div", { class: "modal_wrapper", role: "presentation", "aria-hidden": "false", part: "presentation" }, hAsync("div", { class: "modal_backdrop", onClick: this.handleModalClose, "aria-hidden": "true" }), hAsync("div", { class: "modal_container", role: "dialog", part: "presentation_container" }, hAsync("header", { class: "modal_header" }, hAsync(Typography, { variant: "h4" }, l10n.getString('certificateDetails')), hAsync(Button, { onClick: this.handleModalClose, startIcon: hAsync(CrossIcon, null) })), hAsync("div", { class: "modal_content" }, hAsync("peculiar-certificate-viewer", { certificate: this.certificateSelectedForDetails, mobileMediaQueryString: this.mobileMediaQueryString })))));
18677
+ return (hAsync("div", { class: "modal_wrapper", role: "presentation", "aria-hidden": "false", part: "presentation" }, hAsync("div", { class: "modal_backdrop", "aria-hidden": "true", onClick: this.handleModalClose }), hAsync("div", { class: "modal_container", role: "dialog", part: "presentation_container" }, hAsync("header", { class: "modal_header" }, hAsync(Typography, { variant: "h4" }, l10n.getString('certificateDetails')), hAsync(Button, { startIcon: hAsync(CrossIcon, null), onClick: this.handleModalClose })), hAsync("div", { class: "modal_content" }, hAsync("peculiar-certificate-viewer", { certificate: this.certificateSelectedForDetails, mobileMediaQueryString: this.mobileMediaQueryString })))));
18672
18678
  }
18673
18679
  renderSearch() {
18674
18680
  if (!this.filterWithSearch && !this.highlightWithSearch) {
18675
18681
  return null;
18676
18682
  }
18677
- return (hAsync("div", { class: "search_section" }, hAsync("input", { onInput: this.handleSearch, type: "search", value: "", class: "input_search t-b3 c-black", disabled: !this.certificatesDecoded.length, placeholder: "Search" })));
18683
+ return (hAsync("div", { class: "search_section" }, hAsync("input", { type: "search", value: "", class: "input_search t-b3 c-black", disabled: !this.certificatesDecoded.length, placeholder: "Search", onInput: this.handleSearch })));
18678
18684
  }
18679
18685
  renderEmptyState() {
18680
18686
  const colSpan = this.getMaxColSpanValue();
@@ -18684,7 +18690,6 @@ class CertificatesViewer {
18684
18690
  const colSpan = this.getMaxColSpanValue();
18685
18691
  return (hAsync("tr", null, hAsync("td", { class: "status_wrapper", colSpan: colSpan }, hAsync(Typography, { variant: "b1" }, "No results found for \u201C", this.search, "\u201C"))));
18686
18692
  }
18687
- // eslint-disable-next-line class-methods-use-this
18688
18693
  renderLoadingState() {
18689
18694
  return (hAsync("div", { class: "loading_container" }, hAsync("peculiar-circular-progress", null)));
18690
18695
  }
@@ -18702,7 +18707,7 @@ class CertificatesViewer {
18702
18707
  return certificatesRows;
18703
18708
  }
18704
18709
  render() {
18705
- return (hAsync(Host, { key: 'e10ac3070a3cb75cb9a281a999fec42ef28d593d', "data-mobile-screen-view": String(this.mobileScreenView) }, this.renderSearch(), hAsync("table", { key: 'abc765a09c9537c36500143c6caffa688910483e' }, !this.mobileScreenView && (hAsync("thead", { key: 'c948fc3f9929deda81bfe9f1205b5c6f6032d256' }, hAsync("tr", { key: '7deae387a944910a82588698b61d55c0ba64ff55' }, hAsync("th", { key: '70927a2c00545a1c500e4312ed30022dc24df23a' }), !this.isHasRoots && (hAsync("th", { key: 'af4811bbd78a46f4ab1e96d9a2f3251e59d5d773', class: "col_issuer" }, hAsync(Typography, { key: '11064fc9659acfb8856ad96aba1192972b27e0e3', variant: "s2" }, l10n.getString('issuer')))), hAsync("th", { key: '7898e55528b973f8dddebff2e86763fc4f0ad013', class: "col_name" }, hAsync(Typography, { key: 'e5bae939345bce44423efaaee774678a163d51a6', variant: "s2" }, l10n.getString('name'))), hAsync("th", { key: '83128f3a2812996df534b95690d6268bf0f096ec', class: "col_public_key" }, hAsync(Typography, { key: '05e7f862d2336e2144ddd9438bb2636625abed36', variant: "s2" }, l10n.getString('publicKey'))), hAsync("th", { key: '1387d00b085a524bd97d96e68e07f3e82ee57796', class: "col_fingerprint" }, hAsync(Typography, { key: '393eac698d27bb9a17a2ae5cec18a0658f510f78', variant: "s2" }, l10n.getString('fingerprint'), "\u00A0 (SHA-1)")), hAsync("th", { key: 'ffdba17371ff65a6df244edefe55bb81a9e821c8' })))), hAsync("tbody", { key: '8e44c28a8d4bc64fe76c73d67054df3dcef7a7c1' }, this.renderTableBody())), this.renderCertificateDetailsModal(), this.isDecodeInProcess && this.renderLoadingState()));
18710
+ return (hAsync(Host, { key: '894edb33a53c1128d812c2fd7a5b230a4b13493c', "data-mobile-screen-view": String(this.mobileScreenView) }, this.renderSearch(), hAsync("table", { key: '998d37ab98be6743f1564fafb4ce9fc70b79e358' }, !this.mobileScreenView && (hAsync("thead", { key: '4728e09450b6285cbc2f69cf0a0e06135910558f' }, hAsync("tr", { key: '70bf5be60e50b9d7109e27128b661044778e0ded' }, hAsync("th", { key: 'cf0fef5df1b42d0bce49d3bf0af2d91b82de6d05' }), !this.isHasRoots && (hAsync("th", { key: '59f00d345883dfb3c81a97278583821543ce6808', class: "col_issuer" }, hAsync(Typography, { key: '54ce8fba1ab5355ac1f82ccc3aa62945351a3632', variant: "s2" }, l10n.getString('issuer')))), hAsync("th", { key: '9aea7911edafca1482f31e2ca3316d2cde40fd78', class: "col_name" }, hAsync(Typography, { key: '2a0145b0cc56543ed4b5170a8773c3c43e5e64f9', variant: "s2" }, l10n.getString('name'))), hAsync("th", { key: '9eab414d9b1558d6a5b9938f55165aeca5baa54e', class: "col_public_key" }, hAsync(Typography, { key: 'cbdcb1013bbf12ac88e63ca2d268c55854803297', variant: "s2" }, l10n.getString('publicKey'))), hAsync("th", { key: '06adb89146693583a0dad86644b2c8b399e25c0e', class: "col_fingerprint" }, hAsync(Typography, { key: 'eca0440721f16953219f014edb8d3742f312f704', variant: "s2" }, l10n.getString('fingerprint'), "\u00A0 (SHA-1)")), hAsync("th", { key: '56b7fdf83f5c45cf524a8cce81dbca584b9b5fa8' })))), hAsync("tbody", { key: '01ccda1abfa846a8b0cdc00588b106398358ed88' }, this.renderTableBody())), this.renderCertificateDetailsModal(), this.isDecodeInProcess && this.renderLoadingState()));
18706
18711
  }
18707
18712
  static get watchers() { return {
18708
18713
  "certificates": ["watchCertificates"]
@@ -18745,14 +18750,10 @@ class CircularProgress {
18745
18750
  this.box = 50;
18746
18751
  }
18747
18752
  render() {
18748
- return (hAsync(Host, { key: 'c71275c96a3abcd67c09448bbcd2bcc541500805' }, hAsync("div", { key: 'f2deb4e8dc2878d0975ca9a7da9c5481e7ed01a7', class: "circle_progress", style: {
18753
+ return (hAsync(Host, { key: '0a7d6a83e20839fb324b3f24c7e8b1074775c6a3' }, hAsync("div", { key: '88111c52129ca2806ab67f7862ccdbec0e55e68f', class: "circle_progress", style: {
18749
18754
  width: `${this.size}px`,
18750
18755
  height: `${this.size}px`,
18751
- } }, hAsync("svg", { key: '3968a506d8e670a5199497ee42ae3ec99fb65de7', class: "circle_progress_svg", viewBox: `0 0 ${this.box} ${this.box}` }, hAsync("circle", { key: '55d8b2592fb6614c38841706bd7e55ec3912b88c', class: "circle_progress_backdrop", cx: this.box / 2, cy: this.box / 2, r: (this.box / 2) - 5, fill: "none", style: {
18752
- strokeWidth: `${this.width}px`,
18753
- } }), hAsync("circle", { key: 'f61b2daa3fad404e325b787d3be59c8d7f04c118', class: "circle_progress_circle", cx: this.box / 2, cy: this.box / 2, r: (this.box / 2) - 5, fill: "none", style: {
18754
- strokeWidth: `${this.width}px`,
18755
- } })))));
18756
+ } }, hAsync("svg", { key: '73b6d9ef7d0b5d09049f8b0c3477e633fa6ee8a3', class: "circle_progress_svg", viewBox: `0 0 ${this.box} ${this.box}` }, hAsync("circle", { key: '764d4d27927cd961c84631ac2d9bf2d0ca3e542f', class: "circle_progress_backdrop", cx: this.box / 2, cy: this.box / 2, r: (this.box / 2) - 5, fill: "none", style: { strokeWidth: `${this.width}px` } }), hAsync("circle", { key: 'b24985974a66d754514f5a82b06fa6e7cae77133', class: "circle_progress_circle", cx: this.box / 2, cy: this.box / 2, r: (this.box / 2) - 5, fill: "none", style: { strokeWidth: `${this.width}px` } })))));
18756
18757
  }
18757
18758
  static get style() { return circularProgressCss; }
18758
18759
  static get cmpMeta() { return {
@@ -18843,11 +18844,9 @@ class CrlViewer {
18843
18844
  }
18844
18845
  }
18845
18846
  }
18846
- // eslint-disable-next-line class-methods-use-this
18847
18847
  renderErrorState() {
18848
18848
  return (hAsync("div", { class: "status_wrapper" }, hAsync(Typography, null, "There was an error decoding this certificate revocation list.")));
18849
18849
  }
18850
- // eslint-disable-next-line class-methods-use-this
18851
18850
  renderEmptyState() {
18852
18851
  return (hAsync("div", { class: "status_wrapper" }, hAsync(Typography, null, "There is no certificate revocation list available.")));
18853
18852
  }
@@ -18898,9 +18897,7 @@ class CsrViewer {
18898
18897
  this.mobileMediaQueryString = '(max-width: 900px)';
18899
18898
  this.mobileScreenView = false;
18900
18899
  this.isDecodeInProcess = true;
18901
- // eslint-disable-next-line class-methods-use-this
18902
18900
  this.getAuthKeyIdParentLink = (value) => value;
18903
- // eslint-disable-next-line class-methods-use-this
18904
18901
  this.getAuthKeyIdSiblingsLink = (value) => value;
18905
18902
  this.getSubjectKeyIdChildrenLink = (value) => {
18906
18903
  var _a;
@@ -18959,11 +18956,9 @@ class CsrViewer {
18959
18956
  }
18960
18957
  }
18961
18958
  }
18962
- // eslint-disable-next-line class-methods-use-this
18963
18959
  renderErrorState() {
18964
18960
  return (hAsync("div", { class: "status_wrapper" }, hAsync(Typography, null, "There was an error decoding this certificate request.")));
18965
18961
  }
18966
- // eslint-disable-next-line class-methods-use-this
18967
18962
  renderEmptyState() {
18968
18963
  return (hAsync("div", { class: "status_wrapper" }, hAsync(Typography, null, "There is no certificate request available.")));
18969
18964
  }
@@ -19026,7 +19021,7 @@ class HighlightWords {
19026
19021
  return source.replace(substring, '');
19027
19022
  }
19028
19023
  render() {
19029
- return (hAsync(Host, { key: '353abad7e2fc43ea4af75ec025e08d2ff3159ee6' }, hAsync("slot", { key: '9ac44c0a2b95ea7a778e2d6a2909c797f8c17b6d' })));
19024
+ return (hAsync(Host, { key: '95b1cef18522eabfb495710d6756d8eee86dfa73' }, hAsync("slot", { key: '360e1c4d7121833dbfccdd6e1021d2030017373b' })));
19030
19025
  }
19031
19026
  get host() { return getElement(this); }
19032
19027
  static get style() { return highlightWordsCss; }
@@ -19050,7 +19045,7 @@ class TextHider {
19050
19045
  this.opened = false;
19051
19046
  }
19052
19047
  render() {
19053
- return (hAsync(Host, { key: '8e4789c87df5e4b37a5fdce7b9489e1f26d52fd9', "aria-expanded": String(this.opened) }, hAsync("div", { key: 'd98c5a205b320e9590953cf1e66ef7087413c24c', class: "content" }, hAsync("slot", { key: 'c20480b3144c9b05a719d3bd33a9569a937f176d' })), hAsync(Button, { key: 'a1913fb7cb9a79437e3c84553d38a7245824211a', class: "action", onClick: () => { this.opened = !this.opened; }, startIcon: this.opened ? hAsync(ArrowTopIcon, { color: "secondary" }) : hAsync(ArrowBottomIcon, { color: "secondary" }) })));
19048
+ return (hAsync(Host, { key: 'e62e0ae5bad2145d9d0f8e47493d89f1c9bdd559', "aria-expanded": String(this.opened) }, hAsync("div", { key: 'ee6a5b678e4ff568d017fde3168a37c818c241da', class: "content" }, hAsync("slot", { key: 'b9d073a716fec21e5e9c1dadc66da3fef292d00b' })), hAsync(Button, { key: '398b81d7ec84ccac8803f46dd4d78104a86b9be7', class: "action", startIcon: this.opened ? hAsync(ArrowTopIcon, { color: "secondary" }) : hAsync(ArrowBottomIcon, { color: "secondary" }), onClick: () => { this.opened = !this.opened; } })));
19054
19049
  }
19055
19050
  static get style() { return textHiderCss; }
19056
19051
  static get cmpMeta() { return {