@hermes-ui/angular 0.1.7 → 0.2.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.
- package/README.md +6 -6
- package/button/_buttons.clarity.scss +80 -2
- package/button/_mixins.buttons.scss +44 -2
- package/button/_properties.buttons.scss +209 -247
- package/button/_variables.buttons.scss +22 -0
- package/fesm2022/hermes-ui-angular-accordion.mjs +2 -2
- package/fesm2022/hermes-ui-angular-accordion.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-card-container.mjs +3 -3
- package/fesm2022/hermes-ui-angular-addons-card-container.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-certificate-viewer.mjs +2 -2
- package/fesm2022/hermes-ui-angular-addons-certificate-viewer.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-datagrid-filters.mjs +2 -2
- package/fesm2022/hermes-ui-angular-addons-datagrid-filters.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-datagrid.mjs +2 -2
- package/fesm2022/hermes-ui-angular-addons-datagrid.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-property-view.mjs +2 -2
- package/fesm2022/hermes-ui-angular-addons-property-view.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-theme-builder.mjs +66 -66
- package/fesm2022/hermes-ui-angular-addons-theme-builder.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-var.mjs +2 -2
- package/fesm2022/hermes-ui-angular-addons-var.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-wizard.mjs +2 -2
- package/fesm2022/hermes-ui-angular-addons-wizard.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-button.mjs +2 -2
- package/fesm2022/hermes-ui-angular-button.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-data-datagrid.mjs +2 -2
- package/fesm2022/hermes-ui-angular-data-datagrid.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-data-stack-view.mjs +2 -2
- package/fesm2022/hermes-ui-angular-data-stack-view.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-data-tree-view.mjs +2 -2
- package/fesm2022/hermes-ui-angular-data-tree-view.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-emphasis-alert.mjs +2 -2
- package/fesm2022/hermes-ui-angular-emphasis-alert.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-checkbox.mjs +2 -2
- package/fesm2022/hermes-ui-angular-forms-checkbox.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-combobox.mjs +2 -2
- package/fesm2022/hermes-ui-angular-forms-combobox.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-common.mjs +2 -2
- package/fesm2022/hermes-ui-angular-forms-common.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-datalist.mjs +2 -2
- package/fesm2022/hermes-ui-angular-forms-datalist.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-datepicker.mjs +3 -3
- package/fesm2022/hermes-ui-angular-forms-datepicker.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-file-input.mjs +2 -2
- package/fesm2022/hermes-ui-angular-forms-file-input.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-input.mjs +2 -2
- package/fesm2022/hermes-ui-angular-forms-input.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-native-select.mjs +2 -2
- package/fesm2022/hermes-ui-angular-forms-native-select.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-number-input.mjs +2 -2
- package/fesm2022/hermes-ui-angular-forms-number-input.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-password.mjs +2 -2
- package/fesm2022/hermes-ui-angular-forms-password.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-radio.mjs +2 -2
- package/fesm2022/hermes-ui-angular-forms-radio.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-range.mjs +2 -2
- package/fesm2022/hermes-ui-angular-forms-range.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-select.mjs +2 -2
- package/fesm2022/hermes-ui-angular-forms-select.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-textarea.mjs +2 -2
- package/fesm2022/hermes-ui-angular-forms-textarea.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-icon.mjs +29 -29
- package/fesm2022/hermes-ui-angular-icon.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-layout-nav.mjs +2 -2
- package/fesm2022/hermes-ui-angular-layout-nav.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-layout-tabs.mjs +2 -2
- package/fesm2022/hermes-ui-angular-layout-tabs.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-layout-vertical-nav.mjs +382 -28
- package/fesm2022/hermes-ui-angular-layout-vertical-nav.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-modal.mjs +2 -2
- package/fesm2022/hermes-ui-angular-modal.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-popover-signpost.mjs +2 -2
- package/fesm2022/hermes-ui-angular-popover-signpost.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-stepper.mjs +2 -2
- package/fesm2022/hermes-ui-angular-stepper.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-timeline.mjs +2 -2
- package/fesm2022/hermes-ui-angular-timeline.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-toast.mjs +2 -2
- package/fesm2022/hermes-ui-angular-toast.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-utils.mjs +6 -0
- package/fesm2022/hermes-ui-angular-utils.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-wizard.mjs +2 -2
- package/fesm2022/hermes-ui-angular-wizard.mjs.map +1 -1
- package/forms/combobox/_combobox.clarity.scss +18 -4
- package/forms/combobox/_properties.combobox.scss +5 -5
- package/forms/styles/_input-group.clarity.scss +7 -0
- package/forms/styles/_mixins.forms.scss +12 -10
- package/forms/styles/_native-select.clarity.scss +17 -5
- package/forms/styles/_properties.forms.scss +29 -18
- package/forms/styles/_textarea.clarity.scss +4 -4
- package/forms/styles/_variables.forms.scss +6 -0
- package/layout/main-container/_properties.header.scss +44 -6
- package/layout/main-container/_variables.header.scss +11 -0
- package/layout/nav/_header.clarity.scss +14 -0
- package/layout/nav/_mixins.header.scss +55 -40
- package/layout/nav/_responsive-nav.clarity.scss +21 -10
- package/layout/vertical-nav/_properties.vertical-nav.scss +77 -27
- package/layout/vertical-nav/_variables.vertical-nav.scss +23 -0
- package/layout/vertical-nav/_vertical-nav.clarity.scss +418 -277
- package/package.json +1 -1
- package/types/hermes-ui-angular-addons-theme-builder.d.ts +2 -2
- package/types/hermes-ui-angular-addons-theme-builder.d.ts.map +1 -1
- package/types/hermes-ui-angular-icon.d.ts +3 -3
- package/types/hermes-ui-angular-icon.d.ts.map +1 -1
- package/types/hermes-ui-angular-layout-vertical-nav.d.ts +134 -10
- package/types/hermes-ui-angular-layout-vertical-nav.d.ts.map +1 -1
- package/types/hermes-ui-angular-utils.d.ts +12 -0
- package/types/hermes-ui-angular-utils.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hermes-ui-angular-addons-certificate-viewer.mjs","sources":["../../../addons/certificate-viewer/certificate-viewer.l10n.ts","../../../addons/certificate-viewer/certificate.constants.ts","../../../addons/certificate-viewer/certificate.util.ts","../../../addons/certificate-viewer/models/partial-translate.model.ts","../../../addons/certificate-viewer/models/certificate-field.model.ts","../../../addons/certificate-viewer/models/certificate.model.ts","../../../addons/certificate-viewer/models/certificate-chain.model.ts","../../../addons/certificate-viewer/certificate-viewer-translate-field/certificate-viewer-translate-field.pipe.ts","../../../addons/certificate-viewer/certificate-viewer-details/certificate-viewer-details.component.ts","../../../addons/certificate-viewer/certificate-viewer-details/certificate-viewer-details.component.html","../../../addons/certificate-viewer/certificate-viewer-general/certificate-viewer-general.component.ts","../../../addons/certificate-viewer/certificate-viewer-general/certificate-viewer-general.component.html","../../../addons/certificate-viewer/certificate-viewer/certificate-viewer.component.ts","../../../addons/certificate-viewer/certificate-viewer/certificate-viewer.component.html","../../../addons/certificate-viewer/certificate-viewer.module.ts","../../../addons/certificate-viewer/index.ts","../../../addons/certificate-viewer/hermes-ui-angular-addons-certificate-viewer.ts"],"sourcesContent":["/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\n// Disable the duplicate string check because this is a translations file.\r\n\r\nimport { AppfxTranslations } from '@hermes-ui/angular/addons/translate';\r\n\r\nexport const translations: AppfxTranslations = {\r\n en: {\r\n loading: 'Loading',\r\n\r\n 'issued-to': 'Issued To',\r\n 'issued-by': 'Issued By',\r\n 'issued-on': 'Issued On',\r\n 'expires-on': 'Expires On',\r\n 'validity-period': 'Validity Period',\r\n fingerprints: 'Fingerprints',\r\n 'sha-256-fingerprint': 'SHA-256 Fingerprint',\r\n 'sha-1-fingerprint': 'SHA-1 Fingerprint',\r\n title: 'Certificate viewer: {{title}}',\r\n general: 'General',\r\n details: 'Details',\r\n 'not-part-of-certificate': '<Not part of certificate>',\r\n 'certificate-hierarchy': 'Certificate Hierarchy',\r\n 'certificate-fields': 'Certificate Fields',\r\n 'field-value': 'Field Value',\r\n version: 'Version',\r\n 'version-format': 'Version {{version}}',\r\n validity: 'Validity',\r\n 'not-before': 'Not Before',\r\n 'not-after': 'Not After',\r\n 'serial-number': 'Serial Number',\r\n issuer: 'Issuer',\r\n subject: 'Subject',\r\n 'certificate-signature-algorithm': 'Certificate Signature Algorithm',\r\n 'certificate-signature-value': 'Certificate Signature Value',\r\n 'subject-public-key-info': 'Subject Public Key Info',\r\n 'subject-public-key-algorithm': 'Subject Public Key Algorithm',\r\n 'subjects-public-key': \"Subject's Public Key\",\r\n 'modulus-bits': 'Modulus ({{bits}} bits):',\r\n 'public-exponent': 'Public Exponent:',\r\n 'named-curve': 'Named Curve: {{curve}}',\r\n extensions: 'Extensions',\r\n critical: 'Critical',\r\n 'not-critical': 'Not critical',\r\n signing: 'Signing',\r\n 'certificate-signer': 'Certificate Signer',\r\n 'hermes-signer': 'CRL Signer',\r\n 'is-not-cert-authority': 'Is not a Certification Authority',\r\n 'is-cert-authority': 'Is a Certification Authority',\r\n 'max-number-intermediate-CAs': 'Maximum number of intermediate CAs: {{maxNumber}}',\r\n unlimited: 'unlimited',\r\n 'key-id': 'Key ID: {{id}}',\r\n\r\n 'general-name-other-name': 'Other Name',\r\n 'general-name-rfc822-name': 'RFC822 Name',\r\n 'general-name-dns-name': 'DNS Name',\r\n 'general-name-x400-address': 'X400 Address',\r\n 'general-name-directory-name': 'Directory Name',\r\n 'general-name-edi-party-name': 'EDI Party Name',\r\n 'general-name-uri': 'URI',\r\n 'general-name-ip-address': 'IP Address',\r\n 'general-name-registered-id': 'Registered ID',\r\n\r\n 'key-usage-digitalSignature': 'Signing',\r\n 'key-usage-nonRepudiation': 'Non Repudiation',\r\n 'key-usage-keyEncipherment': 'Key Encipherment',\r\n 'key-usage-dataEncipherment': 'Data Encipherment',\r\n 'key-usage-keyAgreement': 'Key Agreement',\r\n 'key-usage-keyCertSign': 'Certificate Signer',\r\n 'key-usage-cRLSign': 'CRL Signer',\r\n 'key-usage-encipherOnly': 'Encipher Only',\r\n 'key-usage-decipherOnly': 'Decipher Only',\r\n\r\n 'crl-issuer': 'CRL Issuer:',\r\n reasons: 'Reasons:',\r\n\r\n // X.500 Attributes 2.5.4.* with their relative distinguished names (RDNs)\r\n '2.5.4.3': 'Common Name (CN)',\r\n '2.5.4.4': 'Surname (SN)',\r\n '2.5.4.5': 'Serial Number (SERIALNUMBER)',\r\n '2.5.4.6': 'Country Name (C)',\r\n '2.5.4.7': 'Locality Name (L)',\r\n '2.5.4.8': 'State or Province Name (ST)',\r\n '2.5.4.9': 'Street Address (STREET)',\r\n '2.5.4.10': 'Organization Name (O)',\r\n '2.5.4.11': 'Organizational Unit (OU)',\r\n '2.5.4.12': 'Title (T)',\r\n '2.5.4.43': 'Initials (I)',\r\n '2.5.4.42': 'Given Name (GN)',\r\n '2.5.4.44': 'Generation Qualifier',\r\n '2.5.4.46': 'Distinguished Name Qualifier (DN Qualifier)',\r\n\r\n // Certificate Extension 2.5.29.*\r\n '2.5.29.9': 'Subject Directory Attributes',\r\n '2.5.29.14': 'Certificate Subject Key ID',\r\n '2.5.29.15': 'Certificate Key Usage',\r\n '2.5.29.16': 'Private Key Usage',\r\n '2.5.29.17': 'Certificate Subject Alternative Name',\r\n '2.5.29.18': 'Certificate Issuer Alternative Name',\r\n '2.5.29.19': 'Certificate Basic Constraints',\r\n '2.5.29.20': 'CRL Number',\r\n '2.5.29.21': 'Reason Code',\r\n '2.5.29.23': 'Hold Instruction Code',\r\n '2.5.29.24': 'Invalidity Date',\r\n '2.5.29.27': 'Delta CRL Indicator',\r\n '2.5.29.28': 'Issuing Distribution Point',\r\n '2.5.29.29': 'Certificate Issuer',\r\n '2.5.29.30': 'Name Constraints',\r\n '2.5.29.31': 'CRL Distribution Points',\r\n '2.5.29.32': 'Certificate Policies',\r\n '2.5.29.32.0': 'Any policy',\r\n '2.5.29.33': 'Policy Mappings',\r\n '2.5.29.35': 'Certificate Authority Key ID',\r\n '2.5.29.36': 'Policy Constraints',\r\n '2.5.29.37': 'Extended Key Usage',\r\n '2.5.29.37.0': 'Any extended key usage',\r\n '2.5.29.46': 'Freshest CRL',\r\n '2.5.29.54': 'Inhibit Any Policy',\r\n\r\n // PKIX 1.3.6.1.5.5.7.*\r\n '1.3.6.1.5.5.7.1.1': 'Authority Information Access',\r\n '1.3.6.1.5.5.7.1.11': 'Subject Information Access',\r\n '1.3.6.1.5.5.7.2.1': 'Certificate Practice Statement Pointer',\r\n '1.3.6.1.5.5.7.3.1': 'TLS WWW Server Authentication',\r\n '1.3.6.1.5.5.7.3.2': 'TLS WWW Client Authentication',\r\n '1.3.6.1.5.5.7.3.3': 'Signing of Downloadable Executable Code',\r\n '1.3.6.1.5.5.7.3.4': 'Email Protection',\r\n '1.3.6.1.5.5.7.3.5': 'IPSEC End System Certificate',\r\n '1.3.6.1.5.5.7.3.6': 'IPSEC Tunnel Certificate',\r\n '1.3.6.1.5.5.7.3.7': 'IPSEC User Certificate',\r\n '1.3.6.1.5.5.7.3.8': 'PKIX key purpose Time Stamping',\r\n '1.3.6.1.5.5.7.3.9': 'Signing OCSP Responses',\r\n '1.3.6.1.5.5.7.48.1': 'Online Certificate Status Protocol (OCSP)',\r\n '1.3.6.1.5.5.7.48.1.1': 'OCSP Basic Response',\r\n '1.3.6.1.5.5.7.48.1.2': 'OCSP Nonce Extension',\r\n '1.3.6.1.5.5.7.48.1.3': 'Certificate Revocation List (CRL) reference',\r\n '1.3.6.1.5.5.7.48.1.4': 'Response types understood by an OCSP client',\r\n '1.3.6.1.5.5.7.48.1.5': 'OCSP No Check Extension',\r\n '1.3.6.1.5.5.7.48.1.6': 'OCSP Archive Cutoff Extension',\r\n '1.3.6.1.5.5.7.48.1.7': 'OCSP Service Locator Extension',\r\n '1.3.6.1.5.5.7.48.1.8': 'Client Indication Of Preferred Signature Algorithms',\r\n '1.3.6.1.5.5.7.48.2': 'Certificate Authority Issuers',\r\n '1.3.6.1.5.5.7.48.3': 'Time Stamping',\r\n '1.3.6.1.5.5.7.48.5': 'Certificate Authority (CA) Repository',\r\n\r\n // -- NIST --\r\n // AES 2.16.840.1.101.3.4.1.*\r\n '2.16.840.1.101.3.4.1': 'Advanced Encryption Standard (AES)',\r\n '2.16.840.1.101.3.4.1.1': 'AES-128 ECB',\r\n '2.16.840.1.101.3.4.1.2': 'AES-128 CBC',\r\n '2.16.840.1.101.3.4.1.3': 'AES-128 OFB',\r\n '2.16.840.1.101.3.4.1.4': 'AES-128 CFB',\r\n '2.16.840.1.101.3.4.1.5': 'AES-128 KW',\r\n '2.16.840.1.101.3.4.1.6': 'AES-128 GCM',\r\n '2.16.840.1.101.3.4.1.8': 'AES-128 KWP',\r\n '2.16.840.1.101.3.4.1.21': 'AES-192 ECB',\r\n '2.16.840.1.101.3.4.1.22': 'AES-192 CBC',\r\n '2.16.840.1.101.3.4.1.23': 'AES-192 OFB',\r\n '2.16.840.1.101.3.4.1.24': 'AES-192 CFB',\r\n '2.16.840.1.101.3.4.1.25': 'AES-192 KW',\r\n '2.16.840.1.101.3.4.1.26': 'AES-192 GCM',\r\n '2.16.840.1.101.3.4.1.28': 'AES-192 KWP',\r\n '2.16.840.1.101.3.4.1.41': 'AES-256 ECB',\r\n '2.16.840.1.101.3.4.1.42': 'AES-256 CBC',\r\n '2.16.840.1.101.3.4.1.43': 'AES-256 OFB',\r\n '2.16.840.1.101.3.4.1.44': 'AES-256 CFB',\r\n '2.16.840.1.101.3.4.1.45': 'AES-256 KW',\r\n '2.16.840.1.101.3.4.1.46': 'AES-256 GCM',\r\n '2.16.840.1.101.3.4.1.48': 'AES-256 KWP',\r\n\r\n // Secure Hash Algorithms 2.16.840.1.101.3.4.2.*\r\n '2.16.840.1.101.3.4.2': 'Secure Hash Algorithms',\r\n '2.16.840.1.101.3.4.2.1': 'SHA-256',\r\n '2.16.840.1.101.3.4.2.2': 'SHA-384',\r\n '2.16.840.1.101.3.4.2.3': 'SHA-512',\r\n '2.16.840.1.101.3.4.2.4': 'SHA-224',\r\n '2.16.840.1.101.3.4.2.5': 'SHA-512/224',\r\n '2.16.840.1.101.3.4.2.6': 'SHA-512/256',\r\n '2.16.840.1.101.3.4.2.7': 'SHA3-224',\r\n '2.16.840.1.101.3.4.2.8': 'SHA3-256',\r\n '2.16.840.1.101.3.4.2.9': 'SHA3-384',\r\n '2.16.840.1.101.3.4.2.10': 'SHA3-512',\r\n '2.16.840.1.101.3.4.2.11': 'SHAKE-128',\r\n '2.16.840.1.101.3.4.2.12': 'SHAKE-256',\r\n '2.16.840.1.101.3.4.2.13': 'HMAC-SHA3-224',\r\n '2.16.840.1.101.3.4.2.14': 'HMAC-SHA3-256',\r\n '2.16.840.1.101.3.4.2.15': 'HMAC-SHA3-384',\r\n '2.16.840.1.101.3.4.2.16': 'HMAC-SHA3-512',\r\n '2.16.840.1.101.3.4.2.17': 'SHAKE-128 with parameter ShakeOutputLen',\r\n '2.16.840.1.101.3.4.2.18': 'SHAKE-256 with parameter ShakeOutputLen',\r\n\r\n // Signature Algorithms 2.16.840.1.101.3.4.3.*\r\n '2.16.840.1.101.3.4.3': 'Signature Algorithms',\r\n '2.16.840.1.101.3.4.3.1': 'SHA-224 With DSA',\r\n '2.16.840.1.101.3.4.3.2': 'SHA-256 With DSA',\r\n '2.16.840.1.101.3.4.3.3': 'SHA-384 With DSA',\r\n '2.16.840.1.101.3.4.3.4': 'SHA-512 With DSA',\r\n '2.16.840.1.101.3.4.3.5': 'SHA3-224 With DSA',\r\n '2.16.840.1.101.3.4.3.6': 'SHA3-256 With DSA',\r\n '2.16.840.1.101.3.4.3.7': 'SHA3-384 With DSA',\r\n '2.16.840.1.101.3.4.3.8': 'SHA3-512 With DSA',\r\n '2.16.840.1.101.3.4.3.9': 'SHA3-224 With EHERMESA',\r\n '2.16.840.1.101.3.4.3.10': 'SHA3-256 With EHERMESA',\r\n '2.16.840.1.101.3.4.3.11': 'SHA3-384 With EHERMESA',\r\n '2.16.840.1.101.3.4.3.12': 'SHA3-512 With EHERMESA',\r\n '2.16.840.1.101.3.4.3.13': 'SHA3-224 With RSA',\r\n '2.16.840.1.101.3.4.3.14': 'SHA3-256 With RSA',\r\n '2.16.840.1.101.3.4.3.15': 'SHA3-384 With RSA',\r\n '2.16.840.1.101.3.4.3.16': 'SHA3-512 With RSA',\r\n\r\n // RSA Security\r\n // PKCS1 1.2.840.113549.1.1.*\r\n '1.2.840.113549.1.1': 'Public-Key Cryptography Standards (PKCS) #1',\r\n '1.2.840.113549.1.1.1': 'PKCS #1 RSAES-PKCS1-v1_5 encryption scheme',\r\n '1.2.840.113549.1.1.2': 'PKCS #1 MD2 With RSA Encryption',\r\n '1.2.840.113549.1.1.4': 'PKCS #1 MD5 With RSA Encryption',\r\n '1.2.840.113549.1.1.5': 'PKCS #1 SHA1 With RSA Encryption',\r\n '1.2.840.113549.1.1.7': 'PKCS #1 RSA OAEP Encryption Set',\r\n '1.2.840.113549.1.1.8': 'PKCS #1 RSA With MGF1',\r\n '1.2.840.113549.1.1.9': 'PKCS #1 RSA PSpecified',\r\n '1.2.840.113549.1.1.10': 'PKCS #1 RSASSA-PSS',\r\n '1.2.840.113549.1.1.11': 'PKCS #1 SHA-256 With RSA Encryption',\r\n '1.2.840.113549.1.1.12': 'PKCS #1 SHA-384 With RSA Encryption',\r\n '1.2.840.113549.1.1.13': 'PKCS #1 SHA-512 With RSA Encryption',\r\n '1.2.840.113549.1.1.14': 'PKCS #1 SHA-224 With RSA Encryption',\r\n '1.2.840.113549.1.1.15': 'PKCS #1 SHA-512/224 With RSA Encryption',\r\n '1.2.840.113549.1.1.16': 'PKCS #1 SHA-512/256 With RSA Encryption',\r\n\r\n // PKCS3 1.2.840.113549.1.3.*\r\n '1.2.840.113549.1.3': 'Public-Key Cryptography Standards (PKCS) #3: Diffie-Hellman Key-Agreement Standard',\r\n '1.2.840.113549.1.3.1': 'PKCS #3 Diffie-Hellman (DH) key agreement',\r\n\r\n // PKCS5 1.2.840.113549.1.5.*\r\n '1.2.840.113549.1.5': 'PKCS #5 Public-Key Cryptography Standards (PKCS) #5',\r\n '1.2.840.113549.1.5.3': 'PKCS #5 PBE With MD5 And DES',\r\n '1.2.840.113549.1.5.6': 'PKCS #5 PBE With MD5 And RC2',\r\n '1.2.840.113549.1.5.10': 'PKCS #5 PBE With SHA1 And DES',\r\n '1.2.840.113549.1.5.11': 'PKCS #5 PBE With SHA1 And RC2',\r\n '1.2.840.113549.1.5.12': 'PKCS #5 Password-Based Key Derivation Function 2 (PBKDF2)',\r\n '1.2.840.113549.1.5.13': 'PKCS #5 Password-Based Encryption Scheme 2 (PBES2)',\r\n\r\n // PKCS7 1.2.840.113549.1.7.*\r\n '1.2.840.113549.1.7': 'Public-Key Cryptography Standards (PKCS) #7',\r\n '1.2.840.113549.1.7.1': 'PKCS #7 Data',\r\n '1.2.840.113549.1.7.2': 'PKCS #7 Signed Data',\r\n '1.2.840.113549.1.7.3': 'PKCS #7 Enveloped Data',\r\n '1.2.840.113549.1.7.4': 'PKCS #7 Signed And Enveloped Data',\r\n '1.2.840.113549.1.7.5': 'PKCS #7 Digested Data',\r\n '1.2.840.113549.1.7.6': 'PKCS #7 Encrypted Data',\r\n\r\n // PKCS9 1.2.840.113549.1.9.*\r\n '1.2.840.113549.1.9': 'Public-Key Cryptography Standards (PKCS) #9',\r\n '1.2.840.113549.1.9.1': 'PKCS #9 Email Address',\r\n '1.2.840.113549.1.9.2': 'PKCS #9 Unstructured Name',\r\n '1.2.840.113549.1.9.3': 'PKCS #9 Content Type',\r\n '1.2.840.113549.1.9.4': 'PKCS #9 Message Digest',\r\n '1.2.840.113549.1.9.5': 'PKCS #9 Signing Time',\r\n '1.2.840.113549.1.9.6': 'PKCS #9 Counter Signature',\r\n '1.2.840.113549.1.9.7': 'PKCS #9 Challenge Password',\r\n '1.2.840.113549.1.9.8': 'PKCS #9 Unstructured Address',\r\n '1.2.840.113549.1.9.9': 'PKCS #9 Extended Certificate Attributes',\r\n '1.2.840.113549.1.9.10': 'PKCS #9 Issuer And Serial Number',\r\n '1.2.840.113549.1.9.14': 'PKCS #9 Extension Request',\r\n '1.2.840.113549.1.9.15': 'PKCS #9 SMIME Capability',\r\n '1.2.840.113549.1.9.16.1.4': 'PKCS #9 Time Stamp Token Info',\r\n '1.2.840.113549.1.9.16.2.12': 'PKCS #9 Signing Certificate',\r\n '1.2.840.113549.1.9.16.2.14': 'PKCS #9 Signature Timestamp Token',\r\n '1.2.840.113549.1.9.16.3.18':\r\n 'PKCS #9 AEAD_CHACHA20_POLY1305 Authenticated Encryption With Associated Data (AEAD) algorithm',\r\n '1.2.840.113549.1.9.20': 'PKCS #9 Friendly Name',\r\n '1.2.840.113549.1.9.21': 'PKCS #9 Local Key Id',\r\n '1.2.840.113549.1.9.22.1': 'PKCS #9 x509Certificate (for PKCS #12)',\r\n '1.2.840.113549.1.9.52': 'PKCS #9 CMS Algorithm Protection',\r\n\r\n // PKCS12 1.2.840.113549.1.12.*\r\n '1.2.840.113549.1.12': 'Public-Key Cryptography Standards (PKCS) #12',\r\n '1.2.840.113549.1.12.1.1': 'PKCS #12 SHA1-PBE With RC4-128',\r\n '1.2.840.113549.1.12.1.2': 'PKCS #12 SHA1-PBE With RC4-40',\r\n '1.2.840.113549.1.12.1.3': 'PKCS #12 SHA1-PBE With DES-EDE',\r\n '1.2.840.113549.1.12.1.5': 'PKCS #12 SHA1-PBE With RC2-128',\r\n '1.2.840.113549.1.12.1.6': 'PKCS #12 SHA1-PBE With RC2-40',\r\n '1.2.840.113549.1.12.10.1.1': 'PKCS #12 PKCS #8 Shrouded Key Bag',\r\n '1.2.840.113549.1.12.10.1.3': 'PKCS #12 Certificate Bag',\r\n '1.2.840.113549.1.12.10.1.4': 'PKCS #12 Certificate Revocation List (CRL) bag',\r\n '1.2.840.113549.1.12.10.1.5': 'PKCS #12 Secret Bag',\r\n '1.2.840.113549.1.12.10.1.6': 'PKCS #12 Safe Contents Bag',\r\n\r\n // Digest Algorithms 1.2.840.113549.2.*\r\n '1.2.840.113549.2': 'Digest Algorithms',\r\n '1.2.840.113549.2.2': 'Message Digest #2 (MD2)',\r\n '1.2.840.113549.2.5': 'Message Digest #5 (MD5)',\r\n '1.2.840.113549.2.7': 'HMAC-SHA-1',\r\n '1.2.840.113549.2.8': 'HMAC-SHA-224',\r\n '1.2.840.113549.2.9': 'HMAC-SHA-256',\r\n '1.2.840.113549.2.10': 'HMAC-SHA-384',\r\n '1.2.840.113549.2.11': 'HMAC-SHA-512',\r\n '1.2.840.113549.2.12': 'HMAC-SHA-512/224',\r\n '1.2.840.113549.2.13': 'HMAC-SHA-512/256',\r\n\r\n // Encryption Algorithms 1.2.840.113549.3.*\r\n '1.2.840.113549.3': 'Encryption Algorithms',\r\n '1.2.840.113549.3.2': 'RC2-CBC',\r\n '1.2.840.113549.3.4': 'RC4-CBC',\r\n '1.2.840.113549.3.7': 'DES-EDE3-CBC',\r\n '1.2.840.113549.3.9': 'RC5-CBC',\r\n\r\n // -- ANSI --\r\n // X9 1.2.840.10040.4.*\r\n '1.2.840.10040.4.1': 'Dsa Subject Public Key',\r\n '1.2.840.10040.4.3': 'DSA With SHA-1',\r\n\r\n // X9.62 1.2.840.10045.*\r\n '1.2.840.10045.2.1': 'Elliptic Curve Public Key Cryptography',\r\n\r\n '1.2.840.10045.3.0.5': 'TNB 191 V1',\r\n '1.2.840.10045.3.0.6': 'TNB 191 V2',\r\n '1.2.840.10045.3.0.7': 'TNB 191 V3',\r\n '1.2.840.10045.3.0.11': 'TNB 239 V1',\r\n '1.2.840.10045.3.0.12': 'TNB 239 V2',\r\n '1.2.840.10045.3.0.13': 'TNB 239 V3',\r\n '1.2.840.10045.3.0.18': 'TNB 359 V1',\r\n '1.2.840.10045.3.0.20': 'TNB 431 R1',\r\n '1.2.840.10045.3.1.1': 'Elliptic curve domain \"secp192r1\" listed in \"SEC 2\" recommended elliptic curve domain',\r\n '1.2.840.10045.3.1.2': 'Prime 192 V2',\r\n '1.2.840.10045.3.1.3': 'Prime 192 V3',\r\n '1.2.840.10045.3.1.4': 'Prime 239 V1',\r\n '1.2.840.10045.3.1.5': 'Prime 239 V2',\r\n '1.2.840.10045.3.1.6': 'Prime 239 V3',\r\n '1.2.840.10045.3.1.7': 'NIST P-256',\r\n '1.2.840.10045.4.1': 'ANSI X9.62 EHERMESA With SHA-1',\r\n '1.2.840.10045.4.3.1': 'EHERMESA WithSHA-224 signature values',\r\n '1.2.840.10045.4.3.2': 'DSA With SHA-256',\r\n '1.2.840.10045.4.3.3': 'DSA With SHA-384',\r\n '1.2.840.10045.4.3.4': 'DSA With SHA-512',\r\n '1.2.840.10045.4.3': 'ANSI X9.62 EHERMESA With SHA2',\r\n\r\n // X9.42 1.2.840.10046.2.*\r\n '1.2.840.10046.2.1': 'Ephemeral-Static Diffie-Hellman (DH) key agreement algorithm',\r\n\r\n // Teletrust 1.3.36.*\r\n '1.3.36.3.3.2.8.1.1.1': 'Brainpool P160r1 domain parameter set',\r\n '1.3.36.3.3.2.8.1.1.3': 'Brainpool P192r1 domain parameter set',\r\n '1.3.36.3.3.2.8.1.1.5': 'Brainpool P224r1 domain parameter set',\r\n '1.3.36.3.3.2.8.1.1.7': 'Brainpool P256r1 domain parameter set',\r\n '1.3.36.3.3.2.8.1.1.9': 'Brainpool P320r1 domain parameter set',\r\n '1.3.36.3.3.2.8.1.1.11': 'Brainpool P384r1 domain parameter set',\r\n '1.3.36.3.3.2.8.1.1.13': 'Brainpool P512r1 domain parameter set',\r\n\r\n // Certicom 1.3.132.*\r\n '1.3.132.0.1': '\"SEC 2\" recommended elliptic curve domain \"sect163k1\"',\r\n '1.3.132.0.2': '\"SEC 2\" recommended elliptic curve domain \"sect163r1\"',\r\n '1.3.132.0.3': '\"SEC 2\" recommended elliptic curve domain \"sect239k1\"',\r\n '1.3.132.0.4': '\"SEC 2\" recommended elliptic curve domain \"sect113r1\"',\r\n '1.3.132.0.5': '\"SEC 2\" recommended elliptic curve domain \"sect113r2\"',\r\n '1.3.132.0.6': '\"SEC 2\" recommended elliptic curve domain \"secp112r1\"',\r\n '1.3.132.0.7': '\"SEC 2\" recommended elliptic curve domain \"secp112r2\"',\r\n '1.3.132.0.8': '\"SEC 2\" recommended elliptic curve domain \"secp160r1\"',\r\n '1.3.132.0.9': '\"SEC 2\" recommended elliptic curve domain \"secp160k1\"',\r\n '1.3.132.0.10': '\"SEC 2\" recommended elliptic curve domain \"ansip256k1\"',\r\n '1.3.132.0.15': '\"SEC 2\" recommended elliptic curve domain \"sect163r2\"',\r\n '1.3.132.0.16': '\"SEC 2\" recommended elliptic curve domain \"sect283k1\"',\r\n '1.3.132.0.17': '\"SEC 2\" recommended elliptic curve domain \"sect283r1\"',\r\n '1.3.132.0.22': '\"SEC 2\" recommended elliptic curve domain \"sect131r1\"',\r\n '1.3.132.0.23': '\"SEC 2\" recommended elliptic curve domain \"sect131r2\"',\r\n '1.3.132.0.24': '\"SEC 2\" recommended elliptic curve domain \"sect193r1\"',\r\n '1.3.132.0.25': '\"SEC 2\" recommended elliptic curve domain \"sect193r2\"',\r\n '1.3.132.0.26': '\"SEC 2\" recommended elliptic curve domain \"sect233k1\"',\r\n '1.3.132.0.27': '\"SEC 2\" recommended elliptic curve domain \"sect233r1\"',\r\n '1.3.132.0.28': '\"SEC 2\" recommended elliptic curve domain \"secp128r1\"',\r\n '1.3.132.0.29': '\"SEC 2\" recommended elliptic curve domain \"secp128r2\"',\r\n '1.3.132.0.30': '\"SEC 2\" recommended elliptic curve domain \"secp160r2\"',\r\n '1.3.132.0.31': '\"SEC 2\" recommended elliptic curve domain \"secp192k1\"',\r\n '1.3.132.0.32': '\"SEC 2\" recommended elliptic curve domain \"secp224k1\"',\r\n '1.3.132.0.33': '\"SEC 2\" recommended elliptic curve domain \"secp224r1\"',\r\n '1.3.132.0.34': 'National Institute of Standards and Technology (NIST) 384-bit elliptic curve',\r\n '1.3.132.0.35': 'National Institute of Standards and Technology (NIST) 512-bit elliptic curve',\r\n '1.3.132.0.36': '\"SEC 2\" recommended elliptic curve domain \"sect409k1\"',\r\n '1.3.132.0.37': '\"SEC 2\" recommended elliptic curve domain \"sect409r1\"',\r\n '1.3.132.0.38': '\"SEC 2\" recommended elliptic curve domain \"sect571k1\"',\r\n '1.3.132.0.39': '\"SEC 2\" recommended elliptic curve domain \"sect571r1\"',\r\n '1.3.132.1.12': 'Elliptic Curve Diffie-Hellman (ECDH) algorithm',\r\n\r\n // OIW secsig 1.3.14.3.*\r\n '1.3.14.3.2.7':\r\n 'Single-key Data Encryption Standard (DES) in Cipher Block Chaining (CBC) mode with padding operation',\r\n '1.3.14.3.2.12': 'Digital Signature Algorithm (DSA)',\r\n '1.3.14.3.2.13':\r\n 'Security Digital Signature Algorithm (DSA) that uses the Secure Hash Algorithm (SHA) to hash the message contents',\r\n '1.3.14.3.2.15':\r\n 'Rivest, Shamir and Adleman (RSA) algorithm coupled with the Secure Hash Algorithm (SHA) (Oddball using ISO/IEC 9796-2 padding rules)',\r\n '1.3.14.3.2.17':\r\n 'Voice encryption using Data Encryption Standard (DES) (168-bit) algorithm coupled with the Encrypt-Decrypt-Encrypt (EDE) multiple encryption mode of operation',\r\n '1.3.14.3.2.26': 'Secure Hash Algorithm, revision 1 (SHA-1)',\r\n '1.3.14.3.2.27':\r\n 'Digital Signature Algorithm (DSA) that uses the Secure Hash Algorithm 1 (SHA1) producing a 320-bit signature',\r\n '1.3.14.3.2.29':\r\n 'Rivest, Shamir and Adleman (RSA) algorithm that uses the Secure Hash Algorithm 1 (SHA1) (obsolete)',\r\n\r\n // Thawte 1.3.101.*\r\n '1.3.101.110': 'Curve25519 (or X25519) algorithm used with the Diffie-Hellman operation',\r\n '1.3.101.111': 'Curve448 (or X448) algorithm used with the Diffie-Hellman operation',\r\n '1.3.101.112': 'Edwards-curve Digital Signature Algorithm (EdDSA) Ed25519',\r\n '1.3.101.113': 'Edwards-curve Digital Signature Algorithm (EdDSA) Ed448',\r\n\r\n // University College London (UCL) 0.9.2342.19200300.*\r\n '0.9.2342.19200300.100.1.1': 'User ID (UID)',\r\n '0.9.2342.19200300.100.1.25': 'Domain component (DC)',\r\n\r\n // Netscape 2.16.840.1.113730.*\r\n '2.16.840.1.113730.1.1': 'Netscape Certificate Type',\r\n '2.16.840.1.113730.2.5': 'Certificate Sequence',\r\n '2.16.840.1.113730.4.1': 'Netscape Server Gated Crypto (SGC)',\r\n },\r\n es: {\r\n loading: 'Loading',\r\n\r\n 'issued-to': 'Emitido para',\r\n 'issued-by': 'Emitido por',\r\n 'issued-on': 'Emitido el',\r\n 'expires-on': 'Caduca el',\r\n 'validity-period': 'Período de validez',\r\n fingerprints: 'Huellas',\r\n 'sha-256-fingerprint': 'Huella digital SHA-256',\r\n 'sha-1-fingerprint': 'Huella digital SHA-1',\r\n title: 'Visor de certificados: {{title}}',\r\n general: 'General',\r\n details: 'Detalles',\r\n 'not-part-of-certificate': '<Not part of certificate>',\r\n 'certificate-hierarchy': 'Jerarquía de certificados',\r\n 'certificate-fields': 'Campos de certificados',\r\n 'field-value': 'Valor de campo',\r\n version: 'Versión',\r\n 'version-format': 'Versión {{version}}',\r\n validity: 'Validez',\r\n 'not-before': 'No antes',\r\n 'not-after': 'No después',\r\n 'serial-number': 'Número de serie',\r\n issuer: 'Emisor',\r\n subject: 'Sujeto',\r\n 'certificate-signature-algorithm': 'Algoritmo de firma de certificado',\r\n 'certificate-signature-value': 'Valor de firma de certificado',\r\n 'subject-public-key-info': 'Información de clave pública del sujeto',\r\n 'subject-public-key-algorithm': 'Algoritmo de clave pública del sujeto',\r\n 'subjects-public-key': 'Clave pública del sujeto',\r\n 'modulus-bits': 'Módulo ({{bits}} bits):',\r\n 'public-exponent': 'Exponente público:',\r\n 'named-curve': 'Curva con nombre: {{curve}}',\r\n extensions: 'Extensiones',\r\n critical: 'Crítico',\r\n 'not-critical': 'No crítico',\r\n signing: 'Firma',\r\n 'certificate-signer': 'Firmante de certificado',\r\n 'hermes-signer': 'Firmante de CRL',\r\n 'is-not-cert-authority': 'No es una entidad de certificación',\r\n 'is-cert-authority': 'Es una entidad de certificación',\r\n 'max-number-intermediate-CAs': 'Número máximo de CA intermedias: {{maxNumber}}',\r\n unlimited: 'ilimitado',\r\n 'key-id': 'Identificador de clave: {{id}}',\r\n\r\n 'general-name-other-name': 'Otro nombre',\r\n 'general-name-rfc822-name': 'Nombre RFC822',\r\n 'general-name-dns-name': 'Nombre de DNS',\r\n 'general-name-x400-address': 'Dirección X400',\r\n 'general-name-directory-name': 'Nombre del directorio',\r\n 'general-name-edi-party-name': 'Nombre de entidad EDI',\r\n 'general-name-uri': 'URI',\r\n 'general-name-ip-address': 'Dirección IP',\r\n 'general-name-registered-id': 'ID registrado',\r\n\r\n 'key-usage-digitalSignature': 'Firma',\r\n 'key-usage-nonRepudiation': 'No repudio',\r\n 'key-usage-keyEncipherment': 'Cifrado de claves',\r\n 'key-usage-dataEncipherment': 'Cifrado de datos',\r\n 'key-usage-keyAgreement': 'Acuerdo de clave',\r\n 'key-usage-keyCertSign': 'Firmante de certificado',\r\n 'key-usage-cRLSign': 'Firmante de CRL',\r\n 'key-usage-encipherOnly': 'Solo cifrar',\r\n 'key-usage-decipherOnly': 'Solo descifrar',\r\n\r\n 'crl-issuer': 'Emisor de CRL:',\r\n reasons: 'Motivos:',\r\n\r\n // X.500 Attributes 2.5.4.* with their relative distinguished names (RDNs)\r\n '2.5.4.3': 'Nombre común (CN)',\r\n '2.5.4.4': 'Apellido (SN)',\r\n '2.5.4.5': 'Número de serie (SERIALNUMBER)',\r\n '2.5.4.6': 'Nombre de país (C)',\r\n '2.5.4.7': 'Nombre de la localidad (L)',\r\n '2.5.4.8': 'Nombre de estado o provincia (ST)',\r\n '2.5.4.9': 'Dirección postal (STREET)',\r\n '2.5.4.10': 'Nombre de organización (O)',\r\n '2.5.4.11': 'Unidad organizativa (OU)',\r\n '2.5.4.12': 'Cargo (T)',\r\n '2.5.4.43': 'Iniciales (I)',\r\n '2.5.4.42': 'Nombre propio (GN)',\r\n '2.5.4.44': 'Calificador de generación',\r\n '2.5.4.46': 'Calificador de nombre distintivo (calificador de DN)',\r\n\r\n // Certificate Extension 2.5.29.*\r\n '2.5.29.9': 'Atributos de directorio de sujeto',\r\n '2.5.29.14': 'Identificador de clave de sujeto de certificado',\r\n '2.5.29.15': 'Uso de clave de certificado',\r\n '2.5.29.16': 'Uso de clave privada',\r\n '2.5.29.17': 'Nombre alternativo del sujeto del certificado',\r\n '2.5.29.18': 'Nombre alternativo del emisor del certificado',\r\n '2.5.29.19': 'Restricciones básicas del certificado',\r\n '2.5.29.20': 'Número de CRL',\r\n '2.5.29.21': 'Código de razón',\r\n '2.5.29.23': 'Retener código de instrucción',\r\n '2.5.29.24': 'Fecha de expiración',\r\n '2.5.29.27': 'Indicador de CRL de delta',\r\n '2.5.29.28': 'Emisión de punto de distribución',\r\n '2.5.29.29': 'Emisor del certificado',\r\n '2.5.29.30': 'Restricciones de nombre',\r\n '2.5.29.31': 'Puntos de distribución de CRL',\r\n '2.5.29.32': 'Directivas del certificado',\r\n '2.5.29.32.0': 'Cualquier directiva',\r\n '2.5.29.33': 'Asignaciones de directivas',\r\n '2.5.29.35': 'Identificador de clave de entidad de certificación',\r\n '2.5.29.36': 'Restricciones de directivas',\r\n '2.5.29.37': 'Uso extendido de la clave',\r\n '2.5.29.37.0': 'Cualquier uso extendido de la clave',\r\n '2.5.29.46': 'CRL más reciente',\r\n '2.5.29.54': 'Inhibir cualquier directiva',\r\n\r\n // PKIX 1.3.6.1.5.5.7.*\r\n '1.3.6.1.5.5.7.1.1': 'Acceso a información de entidad',\r\n '1.3.6.1.5.5.7.1.11': 'Acceso a información de sujeto',\r\n '1.3.6.1.5.5.7.2.1': 'Puntero de declaración de práctica de certificado',\r\n '1.3.6.1.5.5.7.3.1': 'Autenticación del servidor WWW de TLS',\r\n '1.3.6.1.5.5.7.3.2': 'Autenticación de cliente WWW de TLS',\r\n '1.3.6.1.5.5.7.3.3': 'Firma del código ejecutable descargable',\r\n '1.3.6.1.5.5.7.3.4': 'Protección de correo electrónico',\r\n '1.3.6.1.5.5.7.3.5': 'Certificado del sistema final de IPSEC',\r\n '1.3.6.1.5.5.7.3.6': 'Certificado de túnel de IPSEC',\r\n '1.3.6.1.5.5.7.3.7': 'Certificado de usuario de IPSEC',\r\n '1.3.6.1.5.5.7.3.8': 'Marca de tiempo para propósito de clave PKIX',\r\n '1.3.6.1.5.5.7.3.9': 'Firma de respuestas de OCSP',\r\n '1.3.6.1.5.5.7.48.1': 'Protocolo de estado de certificados en línea (OCSP)',\r\n '1.3.6.1.5.5.7.48.1.1': 'Respuesta básica de OCSP',\r\n '1.3.6.1.5.5.7.48.1.2': 'Extensión de Nonce de OCSP',\r\n '1.3.6.1.5.5.7.48.1.3': 'Referencia de lista de revocación de certificados (CRL)',\r\n '1.3.6.1.5.5.7.48.1.4': 'Tipos de respuesta entendidos por un cliente OCSP',\r\n '1.3.6.1.5.5.7.48.1.5': 'Extensión sin comprobación de OCSP',\r\n '1.3.6.1.5.5.7.48.1.6': 'Extensión de límite de archivo de OCSP',\r\n '1.3.6.1.5.5.7.48.1.7': 'Extensión del localizador de servicios OCSP',\r\n '1.3.6.1.5.5.7.48.1.8': 'Indicación del cliente de algoritmos de firma preferidos',\r\n '1.3.6.1.5.5.7.48.2': 'Emisores de entidad de certificación',\r\n '1.3.6.1.5.5.7.48.3': 'Marca de tiempo',\r\n '1.3.6.1.5.5.7.48.5': 'Repositorio de entidad de certificación (CA)',\r\n\r\n // -- NIST --\r\n // AES 2.16.840.1.101.3.4.1.*\r\n '2.16.840.1.101.3.4.1': 'Estándar de cifrado avanzado (AES)',\r\n '2.16.840.1.101.3.4.1.1': 'AES-128 ECB',\r\n '2.16.840.1.101.3.4.1.2': 'AES-128 CBC',\r\n '2.16.840.1.101.3.4.1.3': 'AES-128 OFB',\r\n '2.16.840.1.101.3.4.1.4': 'AES-128 CFB',\r\n '2.16.840.1.101.3.4.1.5': 'AES-128 KW',\r\n '2.16.840.1.101.3.4.1.6': 'AES-128 GCM',\r\n '2.16.840.1.101.3.4.1.8': 'AES-128 KWP',\r\n '2.16.840.1.101.3.4.1.21': 'AES-192 ECB',\r\n '2.16.840.1.101.3.4.1.22': 'AES-192 CBC',\r\n '2.16.840.1.101.3.4.1.23': 'AES-192 OFB',\r\n '2.16.840.1.101.3.4.1.24': 'AES-192 CFB',\r\n '2.16.840.1.101.3.4.1.25': 'AES-192 KW',\r\n '2.16.840.1.101.3.4.1.26': 'AES-192 GCM',\r\n '2.16.840.1.101.3.4.1.28': 'AES-192 KWP',\r\n '2.16.840.1.101.3.4.1.41': 'AES-256 ECB',\r\n '2.16.840.1.101.3.4.1.42': 'AES-256 CBC',\r\n '2.16.840.1.101.3.4.1.43': 'AES-256 OFB',\r\n '2.16.840.1.101.3.4.1.44': 'AES-256 CFB',\r\n '2.16.840.1.101.3.4.1.45': 'AES-256 KW',\r\n '2.16.840.1.101.3.4.1.46': 'AES-256 GCM',\r\n '2.16.840.1.101.3.4.1.48': 'AES-256 KWP',\r\n\r\n // Secure Hash Algorithms 2.16.840.1.101.3.4.2.*\r\n '2.16.840.1.101.3.4.2': 'Algoritmos hash seguros',\r\n '2.16.840.1.101.3.4.2.1': 'SHA-256',\r\n '2.16.840.1.101.3.4.2.2': 'SHA-384',\r\n '2.16.840.1.101.3.4.2.3': 'SHA-512',\r\n '2.16.840.1.101.3.4.2.4': 'SHA-224',\r\n '2.16.840.1.101.3.4.2.5': 'SHA-512/224',\r\n '2.16.840.1.101.3.4.2.6': 'SHA-512/256',\r\n '2.16.840.1.101.3.4.2.7': 'SHA3-224',\r\n '2.16.840.1.101.3.4.2.8': 'SHA3-256',\r\n '2.16.840.1.101.3.4.2.9': 'SHA3-384',\r\n '2.16.840.1.101.3.4.2.10': 'SHA3-512',\r\n '2.16.840.1.101.3.4.2.11': 'SHAKE-128',\r\n '2.16.840.1.101.3.4.2.12': 'SHAKE-256',\r\n '2.16.840.1.101.3.4.2.13': 'HMAC-SHA3-224',\r\n '2.16.840.1.101.3.4.2.14': 'HMAC-SHA3-256',\r\n '2.16.840.1.101.3.4.2.15': 'HMAC-SHA3-384',\r\n '2.16.840.1.101.3.4.2.16': 'HMAC-SHA3-512',\r\n '2.16.840.1.101.3.4.2.17': 'SHAKE-128 con el parámetro ShakeOutputLen',\r\n '2.16.840.1.101.3.4.2.18': 'SHAKE-256 con el parámetro ShakeOutputLen',\r\n\r\n // Signature Algorithms 2.16.840.1.101.3.4.3.*\r\n '2.16.840.1.101.3.4.3': 'Algoritmos de firma',\r\n '2.16.840.1.101.3.4.3.1': 'SHA-224 con DSA',\r\n '2.16.840.1.101.3.4.3.2': 'SHA-256 con DSA',\r\n '2.16.840.1.101.3.4.3.3': 'SHA-384 con DSA',\r\n '2.16.840.1.101.3.4.3.4': 'SHA-512 con DSA',\r\n '2.16.840.1.101.3.4.3.5': 'SHA3-224 con DSA',\r\n '2.16.840.1.101.3.4.3.6': 'SHA3-256 con DSA',\r\n '2.16.840.1.101.3.4.3.7': 'SHA3-384 con DSA',\r\n '2.16.840.1.101.3.4.3.8': 'SHA3-512 con DSA',\r\n '2.16.840.1.101.3.4.3.9': 'SHA3-224 con EHERMESA',\r\n '2.16.840.1.101.3.4.3.10': 'SHA3-256 con EHERMESA',\r\n '2.16.840.1.101.3.4.3.11': 'SHA3-384 con EHERMESA',\r\n '2.16.840.1.101.3.4.3.12': 'SHA3-512 con EHERMESA',\r\n '2.16.840.1.101.3.4.3.13': 'SHA3-224 con RSA',\r\n '2.16.840.1.101.3.4.3.14': 'SHA3-256 con RSA',\r\n '2.16.840.1.101.3.4.3.15': 'SHA3-384 con RSA',\r\n '2.16.840.1.101.3.4.3.16': 'SHA3-512 con RSA',\r\n\r\n // RSA Security\r\n // PKCS1 1.2.840.113549.1.1.*\r\n '1.2.840.113549.1.1': 'Estándares de criptografía de clave pública (PKCS) #1',\r\n '1.2.840.113549.1.1.1': 'Esquema de cifrado RSAES-PKCS1-v1_5 en PKCS #1',\r\n '1.2.840.113549.1.1.2': 'MD2 con cifrado RSA en PKCS #1',\r\n '1.2.840.113549.1.1.4': 'MD5 con cifrado RSA en PKCS #1',\r\n '1.2.840.113549.1.1.5': 'SHA1 con cifrado RSA en PKCS #1',\r\n '1.2.840.113549.1.1.7': 'Conjunto de cifrado de RSA OAEP en PKCS #1',\r\n '1.2.840.113549.1.1.8': 'RSA con MGF1 en PKCS #1',\r\n '1.2.840.113549.1.1.9': 'RSA PSpecified en PKCS #1',\r\n '1.2.840.113549.1.1.10': 'RSASSA-PSS en PKCS #1',\r\n '1.2.840.113549.1.1.11': 'SHA-256 con cifrado RSA en PKCS #1',\r\n '1.2.840.113549.1.1.12': 'SHA-384 con cifrado RSA en PKCS #1',\r\n '1.2.840.113549.1.1.13': 'SHA-512 con cifrado RSA en PKCS #1',\r\n '1.2.840.113549.1.1.14': 'SHA-224 con cifrado RSA en PKCS #1',\r\n '1.2.840.113549.1.1.15': 'SHA-512/224 con cifrado RSA en PKCS #1',\r\n '1.2.840.113549.1.1.16': 'SHA-512/256 con cifrado RSA en PKCS #1',\r\n\r\n // PKCS3 1.2.840.113549.1.3.*\r\n '1.2.840.113549.1.3':\r\n 'Estándares de criptografía de clave pública (PKCS) #3: estándar Diffie-Hellman Key-Agreement',\r\n '1.2.840.113549.1.3.1': 'Acuerdo de clave de Diffie-Hellman (DH) en PKCS #3',\r\n\r\n // PKCS5 1.2.840.113549.1.5.*\r\n '1.2.840.113549.1.5': 'Estándares de criptografía de clave pública (PKCS) #5 en PKCS #5',\r\n '1.2.840.113549.1.5.3': 'PBE con MD5 y DES en PKCS #5',\r\n '1.2.840.113549.1.5.6': 'PBE con MD5 y RC2 en PKCS #5',\r\n '1.2.840.113549.1.5.10': 'PBE con SHA1 y DES en PKCS #5',\r\n '1.2.840.113549.1.5.11': 'PBE con SHA1 y RC2 en PKCS #5',\r\n '1.2.840.113549.1.5.12': 'Función de derivación de clave basada en contraseña 2 (PBKDF2) en PKCS #5',\r\n '1.2.840.113549.1.5.13': 'Esquema de cifrado basado en contraseña 2 (PBES2) en PKCS #5',\r\n\r\n // PKCS7 1.2.840.113549.1.7.*\r\n '1.2.840.113549.1.7': 'Estándares de criptografía de clave pública (PKCS) #7',\r\n '1.2.840.113549.1.7.1': 'Datos en PKCS #7',\r\n '1.2.840.113549.1.7.2': 'Datos firmados en PKCS #7',\r\n '1.2.840.113549.1.7.3': 'Datos encapsulados en PKCS #7',\r\n '1.2.840.113549.1.7.4': 'Datos firmados y encapsulados en PKCS #7',\r\n '1.2.840.113549.1.7.5': 'Datos resumidos en PKCS #7',\r\n '1.2.840.113549.1.7.6': 'Datos cifrados en PKCS #7',\r\n\r\n // PKCS9 1.2.840.113549.1.9.*\r\n '1.2.840.113549.1.9': 'Estándares de criptografía de clave pública (PKCS) #9',\r\n '1.2.840.113549.1.9.1': 'Dirección de correo electrónico en PKCS #9',\r\n '1.2.840.113549.1.9.2': 'Nombre no estructurado en PKCS #9',\r\n '1.2.840.113549.1.9.3': 'Tipo de contenido en PKCS #9',\r\n '1.2.840.113549.1.9.4': 'Resumen de mensaje en PKCS #9',\r\n '1.2.840.113549.1.9.5': 'Hora de firma en PKCS #9',\r\n '1.2.840.113549.1.9.6': 'Contrafirma en PKCS #9',\r\n '1.2.840.113549.1.9.7': 'Contraseña de desafío en PKCS #9',\r\n '1.2.840.113549.1.9.8': 'Dirección no estructurada en PKCS #9',\r\n '1.2.840.113549.1.9.9': 'Atributos de certificado extendidos en PKCS #9',\r\n '1.2.840.113549.1.9.10': 'Emisor y número de serie en PKCS #9',\r\n '1.2.840.113549.1.9.14': 'Solicitud de extensión en PKCS #9',\r\n '1.2.840.113549.1.9.15': 'Capacidad de SMIME en PKCS #9',\r\n '1.2.840.113549.1.9.16.1.4': 'Información del token de marca de tiempo en PKCS #9',\r\n '1.2.840.113549.1.9.16.2.12': 'Certificado de firma en PKCS #9',\r\n '1.2.840.113549.1.9.16.2.14': 'Token de marca de tiempo de firma en PKCS #9',\r\n '1.2.840.113549.1.9.16.3.18':\r\n 'Algoritmo de cifrado autenticado con datos asociados (AEAD) AEAD_CHACHA20_POLY1305 en PKCS #9',\r\n '1.2.840.113549.1.9.20': 'Nombre descriptivo en PKCS #9',\r\n '1.2.840.113549.1.9.21': 'Identificador de clave local en PKCS #9',\r\n '1.2.840.113549.1.9.22.1': 'Certificado x509 (para PKCS #12) en PKCS #9',\r\n '1.2.840.113549.1.9.52': 'Protección de algoritmo de CMS en PKCS #9',\r\n\r\n // PKCS12 1.2.840.113549.1.12.*\r\n '1.2.840.113549.1.12': 'Estándares de criptografía de clave pública (PKCS) #12',\r\n '1.2.840.113549.1.12.1.1': 'SHA1-PBE con RC4-128 en PKCS #12',\r\n '1.2.840.113549.1.12.1.2': 'SHA1-PBE con RC4-40 en PKCS #12',\r\n '1.2.840.113549.1.12.1.3': 'SHA1-PBE con DES-EDE en PKCS #12',\r\n '1.2.840.113549.1.12.1.5': 'SHA1-PBE con RC2-128 en PKCS #12',\r\n '1.2.840.113549.1.12.1.6': 'SHA1-PBE con RC2-40 en PKCS #12',\r\n '1.2.840.113549.1.12.10.1.1': 'Contenedor de clave encubierta PKCS #8 en PKCS #12',\r\n '1.2.840.113549.1.12.10.1.3': 'Contenedor de certificado en PKCS #12',\r\n '1.2.840.113549.1.12.10.1.4': 'Contenedor de lista de revocación de certificados (CRL) en PKCS #12',\r\n '1.2.840.113549.1.12.10.1.5': 'Contenedor secreto en PKCS #12',\r\n '1.2.840.113549.1.12.10.1.6': 'Contenedor de contenido seguro en PKCS #12',\r\n\r\n // Digest Algorithms 1.2.840.113549.2.*\r\n '1.2.840.113549.2': 'Algoritmos de resumen',\r\n '1.2.840.113549.2.2': 'Resumen del mensaje #2 (MD2)',\r\n '1.2.840.113549.2.5': 'Resumen del mensaje #5 (MD5)',\r\n '1.2.840.113549.2.7': 'HMAC-SHA-1',\r\n '1.2.840.113549.2.8': 'HMAC-SHA-224',\r\n '1.2.840.113549.2.9': 'HMAC-SHA-256',\r\n '1.2.840.113549.2.10': 'HMAC-SHA-384',\r\n '1.2.840.113549.2.11': 'HMAC-SHA-512',\r\n '1.2.840.113549.2.12': 'HMAC-SHA-512/224',\r\n '1.2.840.113549.2.13': 'HMAC-SHA-512/256',\r\n\r\n // Encryption Algorithms 1.2.840.113549.3.*\r\n '1.2.840.113549.3': 'Algoritmos de cifrado',\r\n '1.2.840.113549.3.2': 'RC2-CBC',\r\n '1.2.840.113549.3.4': 'RC4-CBC',\r\n '1.2.840.113549.3.7': 'DES-EDE3-CBC',\r\n '1.2.840.113549.3.9': 'RC5-CBC',\r\n\r\n // -- ANSI --\r\n // X9 1.2.840.10040.4.*\r\n '1.2.840.10040.4.1': 'Clave pública de sujeto con DSA',\r\n '1.2.840.10040.4.3': 'DSA con SHA-1',\r\n\r\n // X9.62 1.2.840.10045.*\r\n '1.2.840.10045.2.1': 'Cifrado de clave pública con curvas elípticas',\r\n\r\n '1.2.840.10045.3.0.5': 'TNB 191 V1',\r\n '1.2.840.10045.3.0.6': 'TNB 191 V2',\r\n '1.2.840.10045.3.0.7': 'TNB 191 V3',\r\n '1.2.840.10045.3.0.11': 'TNB 239 V1',\r\n '1.2.840.10045.3.0.12': 'TNB 239 V2',\r\n '1.2.840.10045.3.0.13': 'TNB 239 V3',\r\n '1.2.840.10045.3.0.18': 'TNB 359 V1',\r\n '1.2.840.10045.3.0.20': 'TNB 431 R1',\r\n '1.2.840.10045.3.1.1':\r\n 'Dominio de curva elíptica \"secp192r1\" incluido en el dominio de curvas elípticas recomendadas de \"SEC 2\"',\r\n '1.2.840.10045.3.1.2': 'Primo 192 V2',\r\n '1.2.840.10045.3.1.3': 'Primo 192 V3',\r\n '1.2.840.10045.3.1.4': 'Primo 239 V1',\r\n '1.2.840.10045.3.1.5': 'Primo 239 V2',\r\n '1.2.840.10045.3.1.6': 'Primo 239 V3',\r\n '1.2.840.10045.3.1.7': 'NIST P-256',\r\n '1.2.840.10045.4.1': 'ANSI X9.62 EHERMESA con SHA-1',\r\n '1.2.840.10045.4.3.1': 'Valores de firma EHERMESA con SHA-224',\r\n '1.2.840.10045.4.3.2': 'DSA con SHA-256',\r\n '1.2.840.10045.4.3.3': 'DSA con SHA-384',\r\n '1.2.840.10045.4.3.4': 'DSA con SHA-512',\r\n '1.2.840.10045.4.3': 'ANSI X9.62 EHERMESA con SHA2',\r\n\r\n // X9.42 1.2.840.10046.2.*\r\n '1.2.840.10046.2.1': 'Algoritmo de acuerdo de claves Diffie-Hellman (DH) efímero-estático',\r\n\r\n // Teletrust 1.3.36.*\r\n '1.3.36.3.3.2.8.1.1.1': 'Conjunto de parámetros de dominio P160r1 de Brainpool',\r\n '1.3.36.3.3.2.8.1.1.3': 'Conjunto de parámetros de dominio P192r1 de Brainpool',\r\n '1.3.36.3.3.2.8.1.1.5': 'Conjunto de parámetros de dominio P224r1 de Brainpool',\r\n '1.3.36.3.3.2.8.1.1.7': 'Conjunto de parámetros de dominio P256r1 de Brainpool',\r\n '1.3.36.3.3.2.8.1.1.9': 'Conjunto de parámetros de dominio P320r1 de Brainpool',\r\n '1.3.36.3.3.2.8.1.1.11': 'Conjunto de parámetros de dominio P384r1 de Brainpool',\r\n '1.3.36.3.3.2.8.1.1.13': 'Conjunto de parámetros de dominio P512r1 de Brainpool',\r\n\r\n // Certicom 1.3.132.*\r\n '1.3.132.0.1': 'Dominio de curva elíptica \"sect163k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.2': 'Dominio de curva elíptica \"sect163r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.3': 'Dominio de curva elíptica \"sect239k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.4': 'Dominio de curva elíptica \"sect113r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.5': 'Dominio de curva elíptica \"sect113r2\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.6': 'Dominio de curva elíptica \"secp112r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.7': 'Dominio de curva elíptica \"secp112r2\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.8': 'Dominio de curva elíptica \"secp160r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.9': 'Dominio de curva elíptica \"secp160k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.10': 'Dominio de curva elíptica \"ansip256k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.15': 'Dominio de curva elíptica \"sect163r2\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.16': 'Dominio de curva elíptica \"sect283k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.17': 'Dominio de curva elíptica \"sect283r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.22': 'Dominio de curva elíptica \"sect131r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.23': 'Dominio de curva elíptica \"sect131r2\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.24': 'Dominio de curva elíptica \"sect193r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.25': 'Dominio de curva elíptica \"sect193r2\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.26': 'Dominio de curva elíptica \"sect233k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.27': 'Dominio de curva elíptica \"sect233r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.28': 'Dominio de curva elíptica \"secp128r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.29': 'Dominio de curva elíptica \"secp128r2\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.30': 'Dominio de curva elíptica \"secp160r2\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.31': 'Dominio de curva elíptica \"secp192k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.32': 'Dominio de curva elíptica \"secp224k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.33': 'Dominio de curva elíptica \"secp224r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.34': 'Curva elíptica de 384 bits del National Institute of Standards and Technology (NIST)',\r\n '1.3.132.0.35': 'Curva elíptica de 512 bits del National Institute of Standards and Technology (NIST)',\r\n '1.3.132.0.36': 'Dominio de curva elíptica \"sect409k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.37': 'Dominio de curva elíptica \"sect409r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.38': 'Dominio de curva elíptica \"sect571k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.39': 'Dominio de curva elíptica \"sect571r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.1.12': 'Algoritmo de curva elíptica Diffie-Hellman (ECDH)',\r\n\r\n // OIW secsig 1.3.14.3.*\r\n '1.3.14.3.2.7':\r\n 'Estándar de cifrado de datos (DES) de clave única en modo de cadena de bloques de cifrado (CBC) con operación de relleno',\r\n '1.3.14.3.2.12': 'Algoritmo de firma digital (DSA)',\r\n '1.3.14.3.2.13':\r\n 'Algoritmo de firma digital (DSA) de seguridad que utiliza el algoritmo de hash seguro (SHA) para cifrar el contenido del mensaje',\r\n '1.3.14.3.2.15':\r\n 'Algoritmo RSA (Rivest, Shamir y Adleman) junto con el algoritmo de hash seguro (SHA) (método inusual que usa reglas de relleno ISO/IEC 9796-2)',\r\n '1.3.14.3.2.17':\r\n 'Cifrado de voz mediante el algoritmo estándar de cifrado de datos (DES) (168 bits) junto con el modo de operación de cifrado múltiple Encrypt-Encrypt-Encrypt (EDE)',\r\n '1.3.14.3.2.26': 'Algoritmo hash seguro, revisión 1 (SHA-1)',\r\n '1.3.14.3.2.27':\r\n 'Algoritmo de firma digital (DSA) que utiliza el algoritmo de hash seguro 1 (SHA1) que produce una firma de 320 bits',\r\n '1.3.14.3.2.29':\r\n 'Algoritmo de RSA (Rivest, Shamir y Adleman) que utiliza el algoritmo de hash seguro 1 (SHA1) (obsoleto)',\r\n\r\n // Thawte 1.3.101.*\r\n '1.3.101.110': 'Algoritmo Curve25519 (o X25519) utilizado con la operación Diffie-Hellman',\r\n '1.3.101.111': 'Algoritmo Curve448 (o X448) utilizado con la operación Diffie-Hellman',\r\n '1.3.101.112': 'Algoritmo de firma digital de curva Edwards (EdDSA) Ed25519',\r\n '1.3.101.113': 'Algoritmo de firma digital de curva Edwards (EdDSA) Ed448',\r\n\r\n // University College London (UCL) 0.9.2342.19200300.*\r\n '0.9.2342.19200300.100.1.1': 'Identificador de usuario (UID)',\r\n '0.9.2342.19200300.100.1.25': 'Componente de dominio (DC)',\r\n\r\n // Netscape 2.16.840.1.113730.*\r\n '2.16.840.1.113730.1.1': 'Tipo de certificado de Netscape',\r\n '2.16.840.1.113730.2.5': 'Secuencia de certificado',\r\n '2.16.840.1.113730.4.1': 'Cifrado con puerta de seguridad de servidor (SGC) de Netscape',\r\n },\r\n fr: {\r\n loading: 'Loading',\r\n\r\n 'issued-to': 'Émis pour',\r\n 'issued-by': 'Émis par',\r\n 'issued-on': 'Émis le',\r\n 'expires-on': 'Expire le',\r\n 'validity-period': 'Période de validit',\r\n fingerprints: 'Empreintes digitales',\r\n 'sha-256-fingerprint': 'Empreinte digitale SHA-256',\r\n 'sha-1-fingerprint': 'Empreinte digitale SHA-1',\r\n title: 'Visionneuse de certificat : {{title}}',\r\n general: 'Général',\r\n details: 'Détails',\r\n 'not-part-of-certificate': '<Not part of certificate>',\r\n 'certificate-hierarchy': 'Hiérarchie des certificats',\r\n 'certificate-fields': 'Champs de certificat',\r\n 'field-value': 'Valeur du champ',\r\n version: 'Version',\r\n 'version-format': 'Version {{version}}',\r\n validity: 'Validité',\r\n 'not-before': 'Pas avant',\r\n 'not-after': 'Pas après',\r\n 'serial-number': 'Numéro de série',\r\n issuer: 'Émetteur',\r\n subject: 'Objet',\r\n 'certificate-signature-algorithm': 'Algorithme de signature de certificat',\r\n 'certificate-signature-value': 'Valeur de signature de certificat',\r\n 'subject-public-key-info': \"Infos de la clé publique de l'objet\",\r\n 'subject-public-key-algorithm': \"Algorithme de la clé publique de l'objet\",\r\n 'subjects-public-key': \"Clé publique de l'objet\",\r\n 'modulus-bits': 'Module ({{bits}} bits) :',\r\n 'public-exponent': 'Exposant public :',\r\n 'named-curve': 'Courbe nommée : {{curve}}',\r\n extensions: 'Extensions',\r\n critical: 'Critique',\r\n 'not-critical': 'Non critique',\r\n signing: 'Signature',\r\n 'certificate-signer': 'Signataire du certificat',\r\n 'hermes-signer': 'Signataire de la CRL',\r\n 'is-not-cert-authority': \"N'est pas une autorité de certification\",\r\n 'is-cert-authority': 'Est une autorité de certification',\r\n 'max-number-intermediate-CAs': 'Nombre maximal de CA intermédiaires : {{maxNumber}}',\r\n unlimited: 'illimité',\r\n 'key-id': 'ID de clé : {{id}}',\r\n\r\n 'general-name-other-name': 'Autre nom',\r\n 'general-name-rfc822-name': 'Nom de RFC822',\r\n 'general-name-dns-name': 'Nom DNS',\r\n 'general-name-x400-address': 'Adresse X400',\r\n 'general-name-directory-name': \"Nom de l'annuaire\",\r\n 'general-name-edi-party-name': 'Nom de partie EDI',\r\n 'general-name-uri': 'URI',\r\n 'general-name-ip-address': 'Adresse IP',\r\n 'general-name-registered-id': 'ID enregistré',\r\n\r\n 'key-usage-digitalSignature': 'Signature',\r\n 'key-usage-nonRepudiation': 'Non-répudiation',\r\n 'key-usage-keyEncipherment': 'Chiffrement de clé',\r\n 'key-usage-dataEncipherment': 'Chiffrement des données',\r\n 'key-usage-keyAgreement': 'Accord de clé',\r\n 'key-usage-keyCertSign': 'Signataire du certificat',\r\n 'key-usage-cRLSign': 'Signataire de la CRL',\r\n 'key-usage-encipherOnly': 'Chiffrement uniquement',\r\n 'key-usage-decipherOnly': 'Déchiffrement uniquement',\r\n\r\n 'crl-issuer': 'Émetteur de la CRL :',\r\n reasons: 'Motifs :',\r\n\r\n // X.500 Attributes 2.5.4.* with their relative distinguished names (RDNs)\r\n '2.5.4.3': 'Nom commun (CN)',\r\n '2.5.4.4': 'Nom (SN)',\r\n '2.5.4.5': 'Numéro de série (SERIALNUMBER)',\r\n '2.5.4.6': 'Nom de pays (C)',\r\n '2.5.4.7': 'Nom de la localité (L)',\r\n '2.5.4.8': \"Nom de l'état ou de la province (ST)\",\r\n '2.5.4.9': 'Adresse (STREET)',\r\n '2.5.4.10': \"Nom de l'organisation (O)\",\r\n '2.5.4.11': \"Unité d'organisation (OU)\",\r\n '2.5.4.12': 'Titre (T)',\r\n '2.5.4.43': 'Initiales (I)',\r\n '2.5.4.42': 'Nom donné (GN)',\r\n '2.5.4.44': 'Qualificateur de génération',\r\n '2.5.4.46': 'Qualificateur de nom unique (qualificateur de DN)',\r\n\r\n // Certificate Extension 2.5.29.*\r\n '2.5.29.9': \"Attributs de l'annuaire de sujet\",\r\n '2.5.29.14': 'ID de la clé de sujet de certificat',\r\n '2.5.29.15': 'Utilisation de la clé de certificat',\r\n '2.5.29.16': 'Utilisation de la clé privée',\r\n '2.5.29.17': 'Autre nom du sujet du certificat',\r\n '2.5.29.18': \"Autre nom de l'abonnement du certificat\",\r\n '2.5.29.19': 'Contraintes de base du certificat',\r\n '2.5.29.20': 'Numéro de CRL',\r\n '2.5.29.21': \"Code d'explication de l'erreur\",\r\n '2.5.29.23': \"Bloquer le code d'instruction\",\r\n '2.5.29.24': \"Date d'invalidité\",\r\n '2.5.29.27': 'Indicateur de CRL delta',\r\n '2.5.29.28': 'Émission du point de distribution',\r\n '2.5.29.29': 'Émetteur du certificat',\r\n '2.5.29.30': 'Contraintes de nom',\r\n '2.5.29.31': 'Points de distribution CRL',\r\n '2.5.29.32': 'Stratégies de certificat',\r\n '2.5.29.32.0': \"N'importe quelle stratégie\",\r\n '2.5.29.33': 'Mappages de stratégies',\r\n '2.5.29.35': \"ID de la clé de l'autorité de certificat\",\r\n '2.5.29.36': 'Contraintes de stratégie',\r\n '2.5.29.37': 'Utilisation prolongée de la clé',\r\n '2.5.29.37.0': 'Utilisation de la clé étendue',\r\n '2.5.29.46': 'CRL la plus récente',\r\n '2.5.29.54': 'Interdire toute stratégie',\r\n\r\n // PKIX 1.3.6.1.5.5.7.*\r\n '1.3.6.1.5.5.7.1.1': \"Accès aux informations de l'autorité\",\r\n '1.3.6.1.5.5.7.1.11': 'Accès aux informations sur le sujet',\r\n '1.3.6.1.5.5.7.2.1': 'Pointeur de relevé pratique de certificat',\r\n '1.3.6.1.5.5.7.3.1': 'Authentification du serveur WWW TLS',\r\n '1.3.6.1.5.5.7.3.2': 'Authentification client WWW TLS',\r\n '1.3.6.1.5.5.7.3.3': 'Signature du code exécutable téléchargeable',\r\n '1.3.6.1.5.5.7.3.4': 'Protection des e-mails',\r\n '1.3.6.1.5.5.7.3.5': 'Certificat de système de fin IPsec',\r\n '1.3.6.1.5.5.7.3.6': 'Certificat de tunnel IPSEC',\r\n '1.3.6.1.5.5.7.3.7': \"Certificat d'utilisateur IPSEC\",\r\n '1.3.6.1.5.5.7.3.8': \"Horodatage de l'objectif de clé PKIX\",\r\n '1.3.6.1.5.5.7.3.9': 'Signature des réponses OCSP',\r\n '1.3.6.1.5.5.7.48.1': 'Online Certificate Status Protocol (OCSP)',\r\n '1.3.6.1.5.5.7.48.1.1': 'Réponse de base OCSP',\r\n '1.3.6.1.5.5.7.48.1.2': 'Extension de nonce OCSP',\r\n '1.3.6.1.5.5.7.48.1.3': 'Référence de la liste de révocation des certificats (CRL)',\r\n '1.3.6.1.5.5.7.48.1.4': 'Types de réponse compris par un client OCSP',\r\n '1.3.6.1.5.5.7.48.1.5': 'Extension sans vérification OCSP',\r\n '1.3.6.1.5.5.7.48.1.6': \"Extension de seuil d'archive OCSP\",\r\n '1.3.6.1.5.5.7.48.1.7': 'Extension de localisateur de service OCSP',\r\n '1.3.6.1.5.5.7.48.1.8': 'Indication du client des algorithmes de signature préférés',\r\n '1.3.6.1.5.5.7.48.2': \"Émetteurs de l'autorité de certification\",\r\n '1.3.6.1.5.5.7.48.3': 'Horodatage',\r\n '1.3.6.1.5.5.7.48.5': \"Référentiel d'autorité de certification (CA)\",\r\n\r\n // -- NIST --\r\n // AES 2.16.840.1.101.3.4.1.*\r\n '2.16.840.1.101.3.4.1': 'Advanced Encryption Standard (AES)',\r\n '2.16.840.1.101.3.4.1.1': 'AES-128 ECB',\r\n '2.16.840.1.101.3.4.1.2': 'AES-128 CBC',\r\n '2.16.840.1.101.3.4.1.3': 'AES-128 OFB',\r\n '2.16.840.1.101.3.4.1.4': 'AES-128 CFB',\r\n '2.16.840.1.101.3.4.1.5': 'AES-128 KW',\r\n '2.16.840.1.101.3.4.1.6': 'AES-128 GCM',\r\n '2.16.840.1.101.3.4.1.8': 'AES-128 KWP',\r\n '2.16.840.1.101.3.4.1.21': 'AES-192 ECB',\r\n '2.16.840.1.101.3.4.1.22': 'AES-192 CBC',\r\n '2.16.840.1.101.3.4.1.23': 'AES-192 OFB',\r\n '2.16.840.1.101.3.4.1.24': 'AES-192 CFB',\r\n '2.16.840.1.101.3.4.1.25': 'AES-192 KW',\r\n '2.16.840.1.101.3.4.1.26': 'AES-192 GCM',\r\n '2.16.840.1.101.3.4.1.28': 'AES-192 KWP',\r\n '2.16.840.1.101.3.4.1.41': 'AES-256 ECB',\r\n '2.16.840.1.101.3.4.1.42': 'AES-256 CBC',\r\n '2.16.840.1.101.3.4.1.43': 'AES-256 OFB',\r\n '2.16.840.1.101.3.4.1.44': 'AES-256 CFB',\r\n '2.16.840.1.101.3.4.1.45': 'AES-256 KW',\r\n '2.16.840.1.101.3.4.1.46': 'AES-256 GCM',\r\n '2.16.840.1.101.3.4.1.48': 'AES-256 KWP',\r\n\r\n // Secure Hash Algorithms 2.16.840.1.101.3.4.2.*\r\n '2.16.840.1.101.3.4.2': 'Algorithmes de hachage sécurisés',\r\n '2.16.840.1.101.3.4.2.1': 'SHA-256',\r\n '2.16.840.1.101.3.4.2.2': 'SHA-384',\r\n '2.16.840.1.101.3.4.2.3': 'SHA-512',\r\n '2.16.840.1.101.3.4.2.4': 'SHA-224',\r\n '2.16.840.1.101.3.4.2.5': 'SHA-512/224',\r\n '2.16.840.1.101.3.4.2.6': 'SHA-512/256',\r\n '2.16.840.1.101.3.4.2.7': 'SHA3-224',\r\n '2.16.840.1.101.3.4.2.8': 'SHA3-256',\r\n '2.16.840.1.101.3.4.2.9': 'SHA3-384',\r\n '2.16.840.1.101.3.4.2.10': 'SHA3-512',\r\n '2.16.840.1.101.3.4.2.11': 'SHAKE-128',\r\n '2.16.840.1.101.3.4.2.12': 'SHAKE-256',\r\n '2.16.840.1.101.3.4.2.13': 'HMAC-SHA3-224',\r\n '2.16.840.1.101.3.4.2.14': 'HMAC-SHA3-256',\r\n '2.16.840.1.101.3.4.2.15': 'HMAC-SHA3-384',\r\n '2.16.840.1.101.3.4.2.16': 'HMAC-SHA3-512',\r\n '2.16.840.1.101.3.4.2.17': 'SHAKE-128 avec le paramètre ShakeOutputLen',\r\n '2.16.840.1.101.3.4.2.18': 'SHAKE-256 avec le paramètre ShakeOutputLen',\r\n\r\n // Signature Algorithms 2.16.840.1.101.3.4.3.*\r\n '2.16.840.1.101.3.4.3': 'Algorithmes de signature',\r\n '2.16.840.1.101.3.4.3.1': 'SHA-224 avec DSA',\r\n '2.16.840.1.101.3.4.3.2': 'SHA-256 avec DSA',\r\n '2.16.840.1.101.3.4.3.3': 'SHA-384 avec DSA',\r\n '2.16.840.1.101.3.4.3.4': 'SHA-512 avec DSA',\r\n '2.16.840.1.101.3.4.3.5': 'SHA3-224 avec DSA',\r\n '2.16.840.1.101.3.4.3.6': 'SHA3-256 avec DSA',\r\n '2.16.840.1.101.3.4.3.7': 'SHA3-384 avec DSA',\r\n '2.16.840.1.101.3.4.3.8': 'SHA3-512 avec DSA',\r\n '2.16.840.1.101.3.4.3.9': 'SHA3-224 avec EHERMESA',\r\n '2.16.840.1.101.3.4.3.10': 'SHA3-256 avec EHERMESA',\r\n '2.16.840.1.101.3.4.3.11': 'SHA3-384 avec EHERMESA',\r\n '2.16.840.1.101.3.4.3.12': 'SHA3-512 avec EHERMESA',\r\n '2.16.840.1.101.3.4.3.13': 'SHA3-224 avec RSA',\r\n '2.16.840.1.101.3.4.3.14': 'SHA3-256 avec RSA',\r\n '2.16.840.1.101.3.4.3.15': 'SHA3-384 avec RSA',\r\n '2.16.840.1.101.3.4.3.16': 'SHA3-512 avec RSA',\r\n\r\n // RSA Security\r\n // PKCS1 1.2.840.113549.1.1.*\r\n '1.2.840.113549.1.1': 'Public-Key Cryptography Standards (PKCS) #1',\r\n '1.2.840.113549.1.1.1': 'PKCS #1 - Schéma de chiffrement RSAES-PKCS1-v1_5',\r\n '1.2.840.113549.1.1.2': 'PKCS #1 - MD2 avec chiffrement RSA',\r\n '1.2.840.113549.1.1.4': 'PKCS #1 - MD5 avec chiffrement RSA',\r\n '1.2.840.113549.1.1.5': 'PKCS #1 - SHA1 avec chiffrement RSA',\r\n '1.2.840.113549.1.1.7': 'PKCS #1 - Ensemble de chiffrement RSA OAEP',\r\n '1.2.840.113549.1.1.8': 'RSA PKCS #1 avec MGF1',\r\n '1.2.840.113549.1.1.9': 'PKCS #1 - RSA PSpecified',\r\n '1.2.840.113549.1.1.10': 'PKCS #1 RSASSA-PSS',\r\n '1.2.840.113549.1.1.11': 'PKCS #1 - SHA-256 avec chiffrement RSA',\r\n '1.2.840.113549.1.1.12': 'PKCS #1 - SHA-384 avec chiffrement RSA',\r\n '1.2.840.113549.1.1.13': 'PKCS #1 - SHA-512 avec chiffrement RSA',\r\n '1.2.840.113549.1.1.14': 'PKCS #1 - SHA-224 avec chiffrement RSA',\r\n '1.2.840.113549.1.1.15': 'PKCS #1 - SHA-512/224 avec chiffrement RSA',\r\n '1.2.840.113549.1.1.16': 'PKCS #1 - SHA-512/256 avec chiffrement RSA',\r\n\r\n // PKCS3 1.2.840.113549.1.3.*\r\n '1.2.840.113549.1.3': \"Public-Key Cryptography Standards (PKCS) #3: norme d'accord de clé Diffie-Hellman\",\r\n '1.2.840.113549.1.3.1': 'PKCS #3 - Accord de clé Diffie-Hellman (DH)',\r\n\r\n // PKCS5 1.2.840.113549.1.5.*\r\n '1.2.840.113549.1.5': 'PKCS #5 - Public-Key Cryptography Standards (PKCS) #5',\r\n '1.2.840.113549.1.5.3': 'PKCS #5 PBE avec MD5 et DES',\r\n '1.2.840.113549.1.5.6': 'PKCS #5 PBE avec MD5 et RC2',\r\n '1.2.840.113549.1.5.10': 'PKCS #5 PBE avec SHA1 et DES',\r\n '1.2.840.113549.1.5.11': 'PKCS #5 PBE avec SHA1 et RC2',\r\n '1.2.840.113549.1.5.12': 'PKCS #5 - Password-Based Key Derivation Function 2 (PBKDF2)',\r\n '1.2.840.113549.1.5.13': 'PKCS #5 - Password-Based Encryption Scheme 2 (PBES2)',\r\n\r\n // PKCS7 1.2.840.113549.1.7.*\r\n '1.2.840.113549.1.7': 'Public-Key Cryptography Standards (PKCS) #7',\r\n '1.2.840.113549.1.7.1': 'Données PKCS #7',\r\n '1.2.840.113549.1.7.2': 'Données signées PKCS #7',\r\n '1.2.840.113549.1.7.3': 'PKCS #7 - Données en enveloppe',\r\n '1.2.840.113549.1.7.4': 'Données signées et enveloppes PKCS #7',\r\n '1.2.840.113549.1.7.5': 'Données condensées de PKCS #7',\r\n '1.2.840.113549.1.7.6': 'Données chiffrées de PKCS #7',\r\n\r\n // PKCS9 1.2.840.113549.1.9.*\r\n '1.2.840.113549.1.9': 'Public-Key Cryptography Standards (PKCS) #9',\r\n '1.2.840.113549.1.9.1': 'Adresse e-mail PKCS #9',\r\n '1.2.840.113549.1.9.2': 'Nom non structuré de PKCS #9',\r\n '1.2.840.113549.1.9.3': 'Type de contenu PKCS #9',\r\n '1.2.840.113549.1.9.4': 'PKCS #9 - Résumé de message',\r\n '1.2.840.113549.1.9.5': 'Heure de signature PKCS #9',\r\n '1.2.840.113549.1.9.6': 'Signature du compteur PKCS #9',\r\n '1.2.840.113549.1.9.7': 'PKCS #9 - Mot de passe du défi',\r\n '1.2.840.113549.1.9.8': 'Adresse non structurée de PKCS #9',\r\n '1.2.840.113549.1.9.9': 'Attributs de certificat étendus PKCS #9',\r\n '1.2.840.113549.1.9.10': 'PKCS #9 - Émetteur et numéro de série',\r\n '1.2.840.113549.1.9.14': \"PKCS #9 - Demande d'extension\",\r\n '1.2.840.113549.1.9.15': 'PKCS #9 - Capacité SMIME',\r\n '1.2.840.113549.1.9.16.1.4': \"PKCS #9 - Informations sur le jeton d'horodatage\",\r\n '1.2.840.113549.1.9.16.2.12': 'Certificat de signature PKCS #9',\r\n '1.2.840.113549.1.9.16.2.14': \"Jeton d'horodatage de signature PKCS #9\",\r\n '1.2.840.113549.1.9.16.3.18':\r\n 'PKCS #9 - AEAD_CHACHA20_POLY1305 - Algorithme Authenticated Encryption With Associated Data (AEAD)',\r\n '1.2.840.113549.1.9.20': 'PKCS #9 - Nom convivial',\r\n '1.2.840.113549.1.9.21': 'PKCS #9 - ID de clé locale',\r\n '1.2.840.113549.1.9.22.1': 'PKCS #9 x509Certificate (pour PKCS #12)',\r\n '1.2.840.113549.1.9.52': \"Protection de l'algorithme CMS PKCS #9\",\r\n\r\n // PKCS12 1.2.840.113549.1.12.*\r\n '1.2.840.113549.1.12': 'Public-Key Cryptography Standards (PKCS) #12',\r\n '1.2.840.113549.1.12.1.1': 'PKCS #12 SHA1-PBE avec RC4-128',\r\n '1.2.840.113549.1.12.1.2': 'PKCS #12 SHA1-PBE avec RC4-40',\r\n '1.2.840.113549.1.12.1.3': 'PKCS #12 SHA1-PBE avec DES-EDE',\r\n '1.2.840.113549.1.12.1.5': 'PKCS #12 SHA1-PBE avec RC2-128',\r\n '1.2.840.113549.1.12.1.6': 'PKCS #12 SHA1-PBE avec RC2-40',\r\n '1.2.840.113549.1.12.10.1.1': 'PKCS #12 - PKCS #8 - Conteneur de clés dissimulé',\r\n '1.2.840.113549.1.12.10.1.3': 'Sac de certificat PKCS #12',\r\n '1.2.840.113549.1.12.10.1.4': 'PKCS #12 - Conteneur de liste de révocation des certificats (CRL)',\r\n '1.2.840.113549.1.12.10.1.5': 'PKCS #12 - Conteneur de secret',\r\n '1.2.840.113549.1.12.10.1.6': 'PKCS #12 - Conteneur de contenu sécurisé',\r\n\r\n // Digest Algorithms 1.2.840.113549.2.*\r\n '1.2.840.113549.2': 'Algorithmes Digest',\r\n '1.2.840.113549.2.2': 'Message Digest #2 (MD2)',\r\n '1.2.840.113549.2.5': 'Message Digest #5 (MD5)',\r\n '1.2.840.113549.2.7': 'HMAC-SHA-1',\r\n '1.2.840.113549.2.8': 'HMAC-SHA-224',\r\n '1.2.840.113549.2.9': 'HMAC-SHA-256',\r\n '1.2.840.113549.2.10': 'HMAC-SHA-384',\r\n '1.2.840.113549.2.11': 'HMAC-SHA-512',\r\n '1.2.840.113549.2.12': 'HMAC-SHA-512/224',\r\n '1.2.840.113549.2.13': 'HMAC-SHA-512/256',\r\n\r\n // Encryption Algorithms 1.2.840.113549.3.*\r\n '1.2.840.113549.3': 'Algorithmes de chiffrement',\r\n '1.2.840.113549.3.2': 'RC2-CBC',\r\n '1.2.840.113549.3.4': 'RC4-CBC',\r\n '1.2.840.113549.3.7': 'DES-EDE3-CBC',\r\n '1.2.840.113549.3.9': 'RC5-CBC',\r\n\r\n // -- ANSI --\r\n // X9 1.2.840.10040.4.*\r\n '1.2.840.10040.4.1': \"Clé publique de l'objet DSA\",\r\n '1.2.840.10040.4.3': 'DSA avec SHA-1',\r\n\r\n // X9.62 1.2.840.10045.*\r\n '1.2.840.10045.2.1': 'Chiffrement de clé publique de courbe elliptique',\r\n\r\n '1.2.840.10045.3.0.5': 'TNB 191 V1',\r\n '1.2.840.10045.3.0.6': 'TNB 191 V2',\r\n '1.2.840.10045.3.0.7': 'TNB 191 V3',\r\n '1.2.840.10045.3.0.11': 'TNB 239 V1',\r\n '1.2.840.10045.3.0.12': 'TNB 239 V2',\r\n '1.2.840.10045.3.0.13': 'TNB 239 V3',\r\n '1.2.840.10045.3.0.18': 'TNB 359 V1',\r\n '1.2.840.10045.3.0.20': 'TNB 431 R1',\r\n '1.2.840.10045.3.1.1':\r\n 'Domaine de courbe elliptique « secp192r1 » répertorié dans la liste des domaines de courbe elliptique recommandés par « SEC 2 »',\r\n '1.2.840.10045.3.1.2': 'Prime 192 V2',\r\n '1.2.840.10045.3.1.3': 'Prime 192 V3',\r\n '1.2.840.10045.3.1.4': 'Prime 239 V1',\r\n '1.2.840.10045.3.1.5': 'Prime 239 V2',\r\n '1.2.840.10045.3.1.6': 'Prime 239 V3',\r\n '1.2.840.10045.3.1.7': 'NIST P-256',\r\n '1.2.840.10045.4.1': 'ANSI X9.62 EHERMESA With SHA-1',\r\n '1.2.840.10045.4.3.1': 'Valeurs de signature EHERMESA WithSHA-224',\r\n '1.2.840.10045.4.3.2': 'DSA avec SHA-256',\r\n '1.2.840.10045.4.3.3': 'DSA avec SHA-384',\r\n '1.2.840.10045.4.3.4': 'DSA avec SHA-512',\r\n '1.2.840.10045.4.3': 'ANSI X9.62 EHERMESA avec SHA2',\r\n\r\n // X9.42 1.2.840.10046.2.*\r\n '1.2.840.10046.2.1': \"Algorithme d'association de clé Diffie-Hellman (DH) éphémère statique\",\r\n\r\n // Teletrust 1.3.36.*\r\n '1.3.36.3.3.2.8.1.1.1': 'Ensemble de paramètres de domaine Brainpool P160r1',\r\n '1.3.36.3.3.2.8.1.1.3': 'Ensemble de paramètres de domaine Brainpool P192r1',\r\n '1.3.36.3.3.2.8.1.1.5': 'Ensemble de paramètres de domaine Brainpool P224r1',\r\n '1.3.36.3.3.2.8.1.1.7': 'Ensemble de paramètres de domaine Brainpool P256r1',\r\n '1.3.36.3.3.2.8.1.1.9': 'Ensemble de paramètres de domaine Brainpool P320r1',\r\n '1.3.36.3.3.2.8.1.1.11': 'Ensemble de paramètres de domaine Brainpool P384r1',\r\n '1.3.36.3.3.2.8.1.1.13': 'Ensemble de paramètres de domaine Brainpool P512r1',\r\n\r\n // Certicom 1.3.132.*\r\n '1.3.132.0.1': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect163k1 »',\r\n '1.3.132.0.2': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect163r1 »',\r\n '1.3.132.0.3': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect239k1 »',\r\n '1.3.132.0.4': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect113r1 »',\r\n '1.3.132.0.5': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect113r2 »',\r\n '1.3.132.0.6': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp112r1 »',\r\n '1.3.132.0.7': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp112r2 »',\r\n '1.3.132.0.8': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp160r1 »',\r\n '1.3.132.0.9': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp160k1 »',\r\n '1.3.132.0.10': 'Domaine de courbe elliptique recommandé par « SEC 2 » « ansip256k1 »',\r\n '1.3.132.0.15': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect163r2 »',\r\n '1.3.132.0.16': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect283k1 »',\r\n '1.3.132.0.17': 'Domaine de courbe elliptique recommandé par « SEC 2 »« sect283r1 »',\r\n '1.3.132.0.22': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect131r1 »',\r\n '1.3.132.0.23': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect131r2 »',\r\n '1.3.132.0.24': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect193r1 »',\r\n '1.3.132.0.25': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect193r2 »',\r\n '1.3.132.0.26': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect233k1 »',\r\n '1.3.132.0.27': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect233r1 »',\r\n '1.3.132.0.28': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp128r1 »',\r\n '1.3.132.0.29': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp128r2 »',\r\n '1.3.132.0.30': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp160r2 »',\r\n '1.3.132.0.31': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp192k1 »',\r\n '1.3.132.0.32': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp224k1 »',\r\n '1.3.132.0.33': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp224r1 »',\r\n '1.3.132.0.34': 'Courbe elliptique 384 bits de NIST (National Institute of Standards and Technology)',\r\n '1.3.132.0.35': 'Courbe elliptique 512 bits de NIST (National Institute of Standards and Technology)',\r\n '1.3.132.0.36': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect409k1 »',\r\n '1.3.132.0.37': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect409r1 »',\r\n '1.3.132.0.38': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect571k1 »',\r\n '1.3.132.0.39': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect571r1 »',\r\n '1.3.132.1.12': 'Algorithme ECDH (Elliptic Curve Diffie-Hellman)',\r\n\r\n // OIW secsig 1.3.14.3.*\r\n '1.3.14.3.2.7':\r\n 'Norme Data Encryption Standard (DES) de clé unique en mode CBC (Cipher Block Chaining) avec opération de remplissage',\r\n '1.3.14.3.2.12': 'Algorithme de signature numérique (DSA)',\r\n '1.3.14.3.2.13':\r\n \"Algorithme de sécurité DSA (Digital Signature Algorithm) qui utilise l'algorithme SHA (Secure Hash Algorithm) pour hachage le contenu du message\",\r\n '1.3.14.3.2.15':\r\n \"Algorithme RSA (Rivest, Shamir et Adleman) couplé à l'algorithme SHA (Seucre Hash Algorithm) (Oddball utilisant les règles de remplissage ISO/IEC 9796-2)\",\r\n '1.3.14.3.2.17':\r\n \"Chiffrement vocal à l'aide de l'algorithme DES (Data Encryption Standard) (168 bits) couplé au mode d'opération de chiffrement multiple EDE (Encrypt-Decrypt-Encrypt)\",\r\n '1.3.14.3.2.26': 'Secure Hash Algorithm, révision 1 (SHA-1)',\r\n '1.3.14.3.2.27':\r\n \"Algorithme DSA (Digital Signature Algorithm) qui utilise l'algorithme SHA1 (Secure Hash Algorithm 1) produisant une signature 320 bits\",\r\n '1.3.14.3.2.29':\r\n \"Algorithme RSA (Rivest, Shaman et Adman) qui utilise l'algorithme SHA1 (Secure Hash Algorithm 1) (obsolète)\",\r\n\r\n // Thawte 1.3.101.*\r\n '1.3.101.110': \"Algorithme Curve25519 (ou X25519) utilisé avec l'opération Diffie-Hellman\",\r\n '1.3.101.111': \"Algorithme Curve448 (ou X448) utilisé avec l'opération Diffie-Hellman\",\r\n '1.3.101.112': 'Edwards-curve Digital Signature Algorithm (EdDSA) Ed25519',\r\n '1.3.101.113': 'Edwards-curve Digital Signature Algorithm (EdDSA) Ed448',\r\n\r\n // University College London (UCL) 0.9.2342.19200300.*\r\n '0.9.2342.19200300.100.1.1': \"ID d'utilisateur (UID)\",\r\n '0.9.2342.19200300.100.1.25': 'Composant de domaine (DC)',\r\n\r\n // Netscape 2.16.840.1.113730.*\r\n '2.16.840.1.113730.1.1': 'Type de certificat de Netscape',\r\n '2.16.840.1.113730.2.5': 'Séquence de certificats',\r\n '2.16.840.1.113730.4.1': 'Netscape Server Gated Crypto (SGC)',\r\n },\r\n ja: {\r\n loading: 'Loading',\r\n\r\n 'issued-to': '発行先',\r\n 'issued-by': '発行元',\r\n 'issued-on': '発行日',\r\n 'expires-on': '有効期限',\r\n 'validity-period': '有効期間',\r\n fingerprints: 'フィンガープリント',\r\n 'sha-256-fingerprint': 'SHA-256 フィンガープリント',\r\n 'sha-1-fingerprint': 'SHA-1 フィンガープリント',\r\n title: '証明書ビューア: {{title}}',\r\n general: '全般',\r\n details: '詳細',\r\n 'not-part-of-certificate': '<Not part of certificate>',\r\n 'certificate-hierarchy': '証明書の階層',\r\n 'certificate-fields': '証明書フィールド',\r\n 'field-value': 'フィールド値',\r\n version: 'バージョン',\r\n 'version-format': 'バージョン {{version}}',\r\n validity: '有効期間',\r\n 'not-before': '次より後',\r\n 'not-after': '次より前',\r\n 'serial-number': 'シリアル番号',\r\n issuer: '発行者',\r\n subject: '件名',\r\n 'certificate-signature-algorithm': '証明書署名アルゴリズム',\r\n 'certificate-signature-value': '証明書署名値',\r\n 'subject-public-key-info': 'サブジェクトのパブリック キーの情報',\r\n 'subject-public-key-algorithm': 'サブジェクトのパブリック キーのアルゴリズム',\r\n 'subjects-public-key': 'サブジェクトのパブリック キー',\r\n 'modulus-bits': 'モジュラス ({{bits}} ビット):',\r\n 'public-exponent': '公開指数:',\r\n 'named-curve': '名前付き曲線: {{curve}}',\r\n extensions: '拡張機能',\r\n critical: '重大',\r\n 'not-critical': '重大ではない',\r\n signing: '署名',\r\n 'certificate-signer': '証明書署名者',\r\n 'hermes-signer': 'CRL 署名者',\r\n 'is-not-cert-authority': '認証局ではない',\r\n 'is-cert-authority': '認証局である',\r\n 'max-number-intermediate-CAs': '中間 CA の最大数: {{maxNumber}}',\r\n unlimited: '制限なし',\r\n 'key-id': 'キー ID: {{id}}',\r\n\r\n 'general-name-other-name': '他の名称',\r\n 'general-name-rfc822-name': 'RFC822 名',\r\n 'general-name-dns-name': 'DNS 名',\r\n 'general-name-x400-address': 'X400 アドレス',\r\n 'general-name-directory-name': 'ディレクトリ名',\r\n 'general-name-edi-party-name': 'EDI パーティ名',\r\n 'general-name-uri': 'URI',\r\n 'general-name-ip-address': 'IP アドレス',\r\n 'general-name-registered-id': '登録 ID',\r\n\r\n 'key-usage-digitalSignature': '署名',\r\n 'key-usage-nonRepudiation': '否認防止',\r\n 'key-usage-keyEncipherment': 'キー暗号化',\r\n 'key-usage-dataEncipherment': 'データ暗号化',\r\n 'key-usage-keyAgreement': 'キー共有',\r\n 'key-usage-keyCertSign': '証明書署名者',\r\n 'key-usage-cRLSign': 'CRL 署名者',\r\n 'key-usage-encipherOnly': '暗号化のみ',\r\n 'key-usage-decipherOnly': '解読のみ',\r\n\r\n 'crl-issuer': 'CRL 発行者:',\r\n reasons: '理由:',\r\n\r\n // X.500 Attributes 2.5.4.* with their relative distinguished names (RDNs)\r\n '2.5.4.3': '共通名 (CN)',\r\n '2.5.4.4': '姓 (SN)',\r\n '2.5.4.5': 'シリアル番号 (SERIALNUMBER)',\r\n '2.5.4.6': '国名 (C)',\r\n '2.5.4.7': 'ローカリティ名 (L)',\r\n '2.5.4.8': '都道府県名 (ST)',\r\n '2.5.4.9': '住所 (STREET)',\r\n '2.5.4.10': '組織名 (O)',\r\n '2.5.4.11': '組織単位 (OU)',\r\n '2.5.4.12': '敬称 (T)',\r\n '2.5.4.43': 'イニシャル (I)',\r\n '2.5.4.42': '名 (GN)',\r\n '2.5.4.44': '世代修飾子',\r\n '2.5.4.46': '識別名修飾子 (DN 修飾子)',\r\n\r\n // Certificate Extension 2.5.29.*\r\n '2.5.29.9': 'サブジェクト ディレクトリ属性',\r\n '2.5.29.14': '証明書のサブジェクト キー ID',\r\n '2.5.29.15': '証明書キー使用法',\r\n '2.5.29.16': 'プライベート キー使用法',\r\n '2.5.29.17': '証明書のサブジェクト代替名',\r\n '2.5.29.18': '証明書発行者の代替名',\r\n '2.5.29.19': '証明書の基本制約',\r\n '2.5.29.20': 'CRL 番号',\r\n '2.5.29.21': '理由コード',\r\n '2.5.29.23': '命令コードを保持',\r\n '2.5.29.24': '無効日',\r\n '2.5.29.27': 'デルタ CRL インジケータ',\r\n '2.5.29.28': '発行配布ポイント',\r\n '2.5.29.29': '証明書発行者',\r\n '2.5.29.30': '名前の制約',\r\n '2.5.29.31': 'CRL 配布ポイント',\r\n '2.5.29.32': '証明書ポリシー',\r\n '2.5.29.32.0': 'すべてのポリシー',\r\n '2.5.29.33': 'ポリシー マッピング',\r\n '2.5.29.35': '認証局キー ID',\r\n '2.5.29.36': 'ポリシーの制約',\r\n '2.5.29.37': '拡張キー使用率',\r\n '2.5.29.37.0': 'すべての拡張キー使用法',\r\n '2.5.29.46': 'Freshest CRL',\r\n '2.5.29.54': 'すべてのポリシーの禁止',\r\n\r\n // PKIX 1.3.6.1.5.5.7.*\r\n '1.3.6.1.5.5.7.1.1': '認証局情報アクセス',\r\n '1.3.6.1.5.5.7.1.11': 'サブジェクト情報アクセス',\r\n '1.3.6.1.5.5.7.2.1': '認証業務規定の指針',\r\n '1.3.6.1.5.5.7.3.1': 'TLS WWW サーバ認証',\r\n '1.3.6.1.5.5.7.3.2': 'TLS WWW クライアント認証',\r\n '1.3.6.1.5.5.7.3.3': 'ダウンロード可能な実行可能コードの署名',\r\n '1.3.6.1.5.5.7.3.4': 'E メール保護',\r\n '1.3.6.1.5.5.7.3.5': 'IPSEC エンド システム証明書',\r\n '1.3.6.1.5.5.7.3.6': 'IPSEC トンネル証明書',\r\n '1.3.6.1.5.5.7.3.7': 'IPSEC ユーザー証明書',\r\n '1.3.6.1.5.5.7.3.8': 'PKIX キーの目的のタイムスタンプ生成',\r\n '1.3.6.1.5.5.7.3.9': 'OCSP 応答の署名',\r\n '1.3.6.1.5.5.7.48.1': 'Online Certificate Status Protocol (OCSP)',\r\n '1.3.6.1.5.5.7.48.1.1': 'OCSP 基本応答',\r\n '1.3.6.1.5.5.7.48.1.2': 'OCSP ノンス拡張機能',\r\n '1.3.6.1.5.5.7.48.1.3': '証明書失効リスト (CRL) 参照',\r\n '1.3.6.1.5.5.7.48.1.4': 'OCSP クライアントによって認識される応答タイプ',\r\n '1.3.6.1.5.5.7.48.1.5': 'OCSP チェック不要拡張機能',\r\n '1.3.6.1.5.5.7.48.1.6': 'OCSP アーカイブ切り捨て拡張機能',\r\n '1.3.6.1.5.5.7.48.1.7': 'OCSP サービス ロケーター拡張機能',\r\n '1.3.6.1.5.5.7.48.1.8': '優先署名アルゴリズムのクライアント表示',\r\n '1.3.6.1.5.5.7.48.2': '認証局発行者',\r\n '1.3.6.1.5.5.7.48.3': 'タイムスタンプ生成',\r\n '1.3.6.1.5.5.7.48.5': '認証局 (CA) リポジトリ',\r\n\r\n // -- NIST --\r\n // AES 2.16.840.1.101.3.4.1.*\r\n '2.16.840.1.101.3.4.1': 'Advanced Encryption Standard (AES)',\r\n '2.16.840.1.101.3.4.1.1': 'AES-128 ECB',\r\n '2.16.840.1.101.3.4.1.2': 'AES-128 CBC',\r\n '2.16.840.1.101.3.4.1.3': 'AES-128 OFB',\r\n '2.16.840.1.101.3.4.1.4': 'AES-128 CFB',\r\n '2.16.840.1.101.3.4.1.5': 'AES-128 KW',\r\n '2.16.840.1.101.3.4.1.6': 'AES-128 GCM',\r\n '2.16.840.1.101.3.4.1.8': 'AES-128 KWP',\r\n '2.16.840.1.101.3.4.1.21': 'AES-192 ECB',\r\n '2.16.840.1.101.3.4.1.22': 'AES-192 CBC',\r\n '2.16.840.1.101.3.4.1.23': 'AES-192 OFB',\r\n '2.16.840.1.101.3.4.1.24': 'AES-192 CFB',\r\n '2.16.840.1.101.3.4.1.25': 'AES-192 KW',\r\n '2.16.840.1.101.3.4.1.26': 'AES-192 GCM',\r\n '2.16.840.1.101.3.4.1.28': 'AES-192 KWP',\r\n '2.16.840.1.101.3.4.1.41': 'AES-256 ECB',\r\n '2.16.840.1.101.3.4.1.42': 'AES-256 CBC',\r\n '2.16.840.1.101.3.4.1.43': 'AES-256 OFB',\r\n '2.16.840.1.101.3.4.1.44': 'AES-256 CFB',\r\n '2.16.840.1.101.3.4.1.45': 'AES-256 KW',\r\n '2.16.840.1.101.3.4.1.46': 'AES-256 GCM',\r\n '2.16.840.1.101.3.4.1.48': 'AES-256 KWP',\r\n\r\n // Secure Hash Algorithms 2.16.840.1.101.3.4.2.*\r\n '2.16.840.1.101.3.4.2': 'Secure Hash Algorithm',\r\n '2.16.840.1.101.3.4.2.1': 'SHA-256',\r\n '2.16.840.1.101.3.4.2.2': 'SHA-384',\r\n '2.16.840.1.101.3.4.2.3': 'SHA-512',\r\n '2.16.840.1.101.3.4.2.4': 'SHA-224',\r\n '2.16.840.1.101.3.4.2.5': 'SHA-512/224',\r\n '2.16.840.1.101.3.4.2.6': 'SHA-512/256',\r\n '2.16.840.1.101.3.4.2.7': 'SHA3-224',\r\n '2.16.840.1.101.3.4.2.8': 'SHA3-256',\r\n '2.16.840.1.101.3.4.2.9': 'SHA3-384',\r\n '2.16.840.1.101.3.4.2.10': 'SHA3-512',\r\n '2.16.840.1.101.3.4.2.11': 'SHAKE-128',\r\n '2.16.840.1.101.3.4.2.12': 'SHAKE-256',\r\n '2.16.840.1.101.3.4.2.13': 'HMAC-SHA3-224',\r\n '2.16.840.1.101.3.4.2.14': 'HMAC-SHA3-256',\r\n '2.16.840.1.101.3.4.2.15': 'HMAC-SHA3-384',\r\n '2.16.840.1.101.3.4.2.16': 'HMAC-SHA3-512',\r\n '2.16.840.1.101.3.4.2.17': 'SHAKE-128 (ShakeOutputLen パラメータを指定)',\r\n '2.16.840.1.101.3.4.2.18': 'SHAKE-256 (ShakeOutputLen パラメータを指定)',\r\n\r\n // Signature Algorithms 2.16.840.1.101.3.4.3.*\r\n '2.16.840.1.101.3.4.3': '署名アルゴリズム',\r\n '2.16.840.1.101.3.4.3.1': 'SHA-224 と DSA',\r\n '2.16.840.1.101.3.4.3.2': 'SHA-256 と DSA',\r\n '2.16.840.1.101.3.4.3.3': 'SHA-384 と DSA',\r\n '2.16.840.1.101.3.4.3.4': 'SHA-512 と DSA',\r\n '2.16.840.1.101.3.4.3.5': 'SHA3-224 と DSA',\r\n '2.16.840.1.101.3.4.3.6': 'SHA3-256 と DSA',\r\n '2.16.840.1.101.3.4.3.7': 'SHA3-384 と DSA',\r\n '2.16.840.1.101.3.4.3.8': 'SHA3-512 と DSA',\r\n '2.16.840.1.101.3.4.3.9': 'SHA3-224 と EHERMESA',\r\n '2.16.840.1.101.3.4.3.10': 'SHA3-256 と EHERMESA',\r\n '2.16.840.1.101.3.4.3.11': 'SHA3-384 と EHERMESA',\r\n '2.16.840.1.101.3.4.3.12': 'SHA3-512 と EHERMESA',\r\n '2.16.840.1.101.3.4.3.13': 'SHA3-224 と RSA',\r\n '2.16.840.1.101.3.4.3.14': 'SHA3-256 と RSA',\r\n '2.16.840.1.101.3.4.3.15': 'SHA3-384 と RSA',\r\n '2.16.840.1.101.3.4.3.16': 'SHA3-512 と RSA',\r\n\r\n // RSA Security\r\n // PKCS1 1.2.840.113549.1.1.*\r\n '1.2.840.113549.1.1': 'Public-Key Cryptography Standards (PKCS) #1',\r\n '1.2.840.113549.1.1.1': 'PKCS #1 RSAES-PKCS1-v1_5 暗号化スキーム',\r\n '1.2.840.113549.1.1.2': 'PKCS #1 MD2 と RSA 暗号化',\r\n '1.2.840.113549.1.1.4': 'PKCS #1 MD5 と RSA 暗号化',\r\n '1.2.840.113549.1.1.5': 'PKCS #1 SHA1 と RSA 暗号化',\r\n '1.2.840.113549.1.1.7': 'PKCS #1 RSA OAEP 暗号化セット',\r\n '1.2.840.113549.1.1.8': 'PKCS #1 RSA と MGF1',\r\n '1.2.840.113549.1.1.9': 'PKCS #1 RSA P 指定',\r\n '1.2.840.113549.1.1.10': 'PKCS #1 RSASSA-PSS',\r\n '1.2.840.113549.1.1.11': 'PKCS #1 SHA-256 と RSA 暗号化',\r\n '1.2.840.113549.1.1.12': 'PKCS #1 SHA-384 と RSA 暗号化',\r\n '1.2.840.113549.1.1.13': 'PKCS #1 SHA-512 と RSA 暗号化',\r\n '1.2.840.113549.1.1.14': 'PKCS #1 SHA-224 と RSA 暗号化',\r\n '1.2.840.113549.1.1.15': 'PKCS #1 SHA-512/224 と RSA 暗号化',\r\n '1.2.840.113549.1.1.16': 'PKCS #1 SHA-512/256 と RSA 暗号化',\r\n\r\n // PKCS3 1.2.840.113549.1.3.*\r\n '1.2.840.113549.1.3': 'Public-Key Cryptography Standards (PKCS) #3: Diffie-Hellman Key-Agreement Standard',\r\n '1.2.840.113549.1.3.1': 'PKCS #3 Diffie-Hellman (DH) キー共有',\r\n\r\n // PKCS5 1.2.840.113549.1.5.*\r\n '1.2.840.113549.1.5': 'PKCS #5 Public-Key Cryptography Standards (PKCS) #5',\r\n '1.2.840.113549.1.5.3': 'PKCS #5 PBE と MD5、DES',\r\n '1.2.840.113549.1.5.6': 'PKCS #5 PBE と MD5、RC2',\r\n '1.2.840.113549.1.5.10': 'PKCS #5 PBE と SHA1、DES',\r\n '1.2.840.113549.1.5.11': 'PKCS #5 PBE と SHA1、RC2',\r\n '1.2.840.113549.1.5.12': 'PKCS #5 Password-Based Key Derivation Function 2 (PBKDF2)',\r\n '1.2.840.113549.1.5.13': 'PKCS #5 Password-Based Encryption Scheme 2 (PBES2)',\r\n\r\n // PKCS7 1.2.840.113549.1.7.*\r\n '1.2.840.113549.1.7': 'Public-Key Cryptography Standards (PKCS) #7',\r\n '1.2.840.113549.1.7.1': 'PKCS #7 データ',\r\n '1.2.840.113549.1.7.2': 'PKCS #7 署名済みデータ',\r\n '1.2.840.113549.1.7.3': 'PKCS #7 エンベロープ データ',\r\n '1.2.840.113549.1.7.4': 'PKCS #7 署名済みデータとエンベロープ データ',\r\n '1.2.840.113549.1.7.5': 'PKCS #7 ダイジェスト データ',\r\n '1.2.840.113549.1.7.6': 'PKCS #7 暗号化されたデータ',\r\n\r\n // PKCS9 1.2.840.113549.1.9.*\r\n '1.2.840.113549.1.9': 'Public-Key Cryptography Standards (PKCS) #9',\r\n '1.2.840.113549.1.9.1': 'PKCS #9 メール アドレス',\r\n '1.2.840.113549.1.9.2': 'PKCS #9 非構造化名',\r\n '1.2.840.113549.1.9.3': 'PKCS #9 コンテンツ タイプ',\r\n '1.2.840.113549.1.9.4': 'PKCS #9 メッセージ ダイジェスト',\r\n '1.2.840.113549.1.9.5': 'PKCS #9 署名時刻',\r\n '1.2.840.113549.1.9.6': 'PKCS #9 カウンタ署名',\r\n '1.2.840.113549.1.9.7': 'PKCS #9 チャレンジ パスワード',\r\n '1.2.840.113549.1.9.8': 'PKCS #9 非構造化アドレス',\r\n '1.2.840.113549.1.9.9': 'PKCS #9 拡張証明書属性',\r\n '1.2.840.113549.1.9.10': 'PKCS #9 発行者とシリアル番号',\r\n '1.2.840.113549.1.9.14': 'PKCS #9 拡張要求',\r\n '1.2.840.113549.1.9.15': 'PKCS #9 SMIME 機能',\r\n '1.2.840.113549.1.9.16.1.4': 'PKCS #9 タイムスタンプ トークン情報',\r\n '1.2.840.113549.1.9.16.2.12': 'PKCS #9 署名証明書',\r\n '1.2.840.113549.1.9.16.2.14': 'PKCS #9 署名タイムスタンプ トークン',\r\n '1.2.840.113549.1.9.16.3.18':\r\n 'PKCS #9 AEAD_CHACHA20_POLY1305 Authenticated Encryption With Associated Data (AEAD) アルゴリズム',\r\n '1.2.840.113549.1.9.20': 'PKCS #9 フレンドリ名',\r\n '1.2.840.113549.1.9.21': 'PKCS #9 ローカル キー ID',\r\n '1.2.840.113549.1.9.22.1': 'PKCS #9 x509 証明書 (PKCS #12 の場合)',\r\n '1.2.840.113549.1.9.52': 'PKCS #9 CMS アルゴリズム保護',\r\n\r\n // PKCS12 1.2.840.113549.1.12.*\r\n '1.2.840.113549.1.12': 'Public-Key Cryptography Standards (PKCS) #12',\r\n '1.2.840.113549.1.12.1.1': 'PKCS #12 SHA1-PBE と RC4-128',\r\n '1.2.840.113549.1.12.1.2': 'PKCS #12 SHA1-PBE と RC4-40',\r\n '1.2.840.113549.1.12.1.3': 'PKCS #12 SHA1-PBE と DES-EDE',\r\n '1.2.840.113549.1.12.1.5': 'PKCS #12 SHA1-PBE と RC2-128',\r\n '1.2.840.113549.1.12.1.6': 'PKCS #12 SHA1-PBE と RC2-40',\r\n '1.2.840.113549.1.12.10.1.1': 'PKCS #12 PKCS #8 シュラウド キー バッグ',\r\n '1.2.840.113549.1.12.10.1.3': 'PKCS #12 証明書バッグ',\r\n '1.2.840.113549.1.12.10.1.4': 'PKCS #12 証明書失効リスト (CRL) バッグ',\r\n '1.2.840.113549.1.12.10.1.5': 'PKCS #12 シークレット バッグ',\r\n '1.2.840.113549.1.12.10.1.6': 'PKCS #12 セーフ コンテンツ バッグ',\r\n\r\n // Digest Algorithms 1.2.840.113549.2.*\r\n '1.2.840.113549.2': 'ダイジェスト アルゴリズム',\r\n '1.2.840.113549.2.2': 'メッセージ ダイジェスト #2 (MD2)',\r\n '1.2.840.113549.2.5': 'メッセージ ダイジェスト #5 (MD5)',\r\n '1.2.840.113549.2.7': 'HMAC-SHA-1',\r\n '1.2.840.113549.2.8': 'HMAC-SHA-224',\r\n '1.2.840.113549.2.9': 'HMAC-SHA-256',\r\n '1.2.840.113549.2.10': 'HMAC-SHA-384',\r\n '1.2.840.113549.2.11': 'HMAC-SHA-512',\r\n '1.2.840.113549.2.12': 'HMAC-SHA-512/224',\r\n '1.2.840.113549.2.13': 'HMAC-SHA-512/256',\r\n\r\n // Encryption Algorithms 1.2.840.113549.3.*\r\n '1.2.840.113549.3': '暗号化アルゴリズム',\r\n '1.2.840.113549.3.2': 'RC2-CBC',\r\n '1.2.840.113549.3.4': 'RC4-CBC',\r\n '1.2.840.113549.3.7': 'DES-EDE3-CBC',\r\n '1.2.840.113549.3.9': 'RC5-CBC',\r\n\r\n // -- ANSI --\r\n // X9 1.2.840.10040.4.*\r\n '1.2.840.10040.4.1': 'DSA サブジェクトのパブリック キー',\r\n '1.2.840.10040.4.3': 'DSA と SHA-1',\r\n\r\n // X9.62 1.2.840.10045.*\r\n '1.2.840.10045.2.1': '楕円曲線パブリック キー暗号化',\r\n\r\n '1.2.840.10045.3.0.5': 'TNB 191 V1',\r\n '1.2.840.10045.3.0.6': 'TNB 191 V2',\r\n '1.2.840.10045.3.0.7': 'TNB 191 V3',\r\n '1.2.840.10045.3.0.11': 'TNB 239 V1',\r\n '1.2.840.10045.3.0.12': 'TNB 239 V2',\r\n '1.2.840.10045.3.0.13': 'TNB 239 V3',\r\n '1.2.840.10045.3.0.18': 'TNB 359 V1',\r\n '1.2.840.10045.3.0.20': 'TNB 431 R1',\r\n '1.2.840.10045.3.1.1': '「SEC 2」推奨の楕円曲線ドメインにリストされた楕円曲線ドメイン「secp192r1」',\r\n '1.2.840.10045.3.1.2': 'Prime 192 V2',\r\n '1.2.840.10045.3.1.3': 'Prime 192 V3',\r\n '1.2.840.10045.3.1.4': 'Prime 239 V1',\r\n '1.2.840.10045.3.1.5': 'Prime 239 V2',\r\n '1.2.840.10045.3.1.6': 'Prime 239 V3',\r\n '1.2.840.10045.3.1.7': 'NIST P-256',\r\n '1.2.840.10045.4.1': 'ANSI X9.62 EHERMESA と SHA-1',\r\n '1.2.840.10045.4.3.1': 'EHERMESA と SHA-224 署名値',\r\n '1.2.840.10045.4.3.2': 'DSA と SHA-256',\r\n '1.2.840.10045.4.3.3': 'DSA と SHA-384',\r\n '1.2.840.10045.4.3.4': 'DSA と SHA-512',\r\n '1.2.840.10045.4.3': 'ANSI X9.62 EHERMESA と SHA2',\r\n\r\n // X9.42 1.2.840.10046.2.*\r\n '1.2.840.10046.2.1': 'Ephemeral-Static Diffie-Hellman (DH) キー共有アルゴリズム',\r\n\r\n // Teletrust 1.3.36.*\r\n '1.3.36.3.3.2.8.1.1.1': 'Brainpool P160r1 ドメイン パラメータ セット',\r\n '1.3.36.3.3.2.8.1.1.3': 'Brainpool P192r1 ドメイン パラメータ セット',\r\n '1.3.36.3.3.2.8.1.1.5': 'Brainpool P224r1 ドメイン パラメータ セット',\r\n '1.3.36.3.3.2.8.1.1.7': 'Brainpool P256r1 ドメイン パラメータ セット',\r\n '1.3.36.3.3.2.8.1.1.9': 'Brainpool P320r1 ドメイン パラメータ セット',\r\n '1.3.36.3.3.2.8.1.1.11': 'Brainpool P384r1 ドメイン パラメータ セット',\r\n '1.3.36.3.3.2.8.1.1.13': 'Brainpool P512r1 ドメイン パラメータ セット',\r\n\r\n // Certicom 1.3.132.*\r\n '1.3.132.0.1': '「SEC 2」推奨の楕円曲線ドメイン「sect163k1」',\r\n '1.3.132.0.2': '「SEC 2」推奨の楕円曲線ドメイン「sect163r1」',\r\n '1.3.132.0.3': '「SEC 2」推奨の楕円曲線ドメイン「sect239k1」',\r\n '1.3.132.0.4': '「SEC 2」推奨の楕円曲線ドメイン「sect113r1」',\r\n '1.3.132.0.5': '「SEC 2」推奨の楕円曲線ドメイン「sect113r2」',\r\n '1.3.132.0.6': '「SEC 2」推奨の楕円曲線ドメイン「secp112r1」',\r\n '1.3.132.0.7': '「SEC 2」推奨の楕円曲線ドメイン「secp112r2」',\r\n '1.3.132.0.8': '「SEC 2」推奨の楕円曲線ドメイン「secp160r1」',\r\n '1.3.132.0.9': '「SEC 2」推奨の楕円曲線ドメイン「secp160k1」',\r\n '1.3.132.0.10': '「SEC 2」推奨の楕円曲線ドメイン「ansip256k1」',\r\n '1.3.132.0.15': '「SEC 2」推奨の楕円曲線ドメイン「sect163r2」',\r\n '1.3.132.0.16': '「SEC 2」推奨の楕円曲線ドメイン「sect283k1」',\r\n '1.3.132.0.17': '「SEC 2」推奨の楕円曲線ドメイン「sect283r1」',\r\n '1.3.132.0.22': '「SEC 2」推奨の楕円曲線ドメイン「sect131r1」',\r\n '1.3.132.0.23': '「SEC 2」推奨の楕円曲線ドメイン「sect131r2」',\r\n '1.3.132.0.24': '「SEC 2」推奨の楕円曲線ドメイン「sect193r1」',\r\n '1.3.132.0.25': '「SEC 2」推奨の楕円曲線ドメイン「sect193r2」',\r\n '1.3.132.0.26': '「SEC 2」推奨の楕円曲線ドメイン「sect233k1」',\r\n '1.3.132.0.27': '「SEC 2」推奨の楕円曲線ドメイン「sect233r1」',\r\n '1.3.132.0.28': '「SEC 2」推奨の楕円曲線ドメイン「secp128r1」',\r\n '1.3.132.0.29': '「SEC 2」推奨の楕円曲線ドメイン「secp128r2」',\r\n '1.3.132.0.30': '「SEC 2」推奨の楕円曲線ドメイン「secp160r2」',\r\n '1.3.132.0.31': '「SEC 2」推奨の楕円曲線ドメイン「secp192k1」',\r\n '1.3.132.0.32': '「SEC 2」推奨の楕円曲線ドメイン「secp224k1」',\r\n '1.3.132.0.33': '「SEC 2」推奨の楕円曲線ドメイン「secp224r1」',\r\n '1.3.132.0.34': '米国国立標準技術研究所 (NIST) 384 ビット楕円曲線',\r\n '1.3.132.0.35': '米国国立標準技術研究所 (NIST) 512 ビット楕円曲線',\r\n '1.3.132.0.36': '「SEC 2」推奨の楕円曲線ドメイン「sect409k1」',\r\n '1.3.132.0.37': '「SEC 2」推奨の楕円曲線ドメイン「sect409r1」',\r\n '1.3.132.0.38': '「SEC 2」推奨の楕円曲線ドメイン「sect571k1」',\r\n '1.3.132.0.39': '「SEC 2」推奨の楕円曲線ドメイン「sect571r1」',\r\n '1.3.132.1.12': '楕円曲線 Diffie-Hellman (ECDH) アルゴリズム',\r\n\r\n // OIW secsig 1.3.14.3.*\r\n '1.3.14.3.2.7': 'パディング処理を使用する Cipher Block Chaining (CBC) モードのシングルキー データ暗号化標準 (DES)',\r\n '1.3.14.3.2.12': 'デジタル署名アルゴリズム (DSA)',\r\n '1.3.14.3.2.13':\r\n 'Secure Hash Algorithm (SHA) を使用してメッセージのコンテンツをハッシュ化するセキュリティ デジタル署名アルゴリズム (DSA)',\r\n '1.3.14.3.2.15':\r\n 'Rivest, Shamir and Adleman (RSA) アルゴリズムと Secure Hash Algorithm (SHA) の組み合わせ (ISO/IEC 9796-2 パディング ルールを使用する Oddball)',\r\n '1.3.14.3.2.17':\r\n 'データ暗号化標準 (DES) (168 ビット) アルゴリズムを使用する音声暗号化と Encrypt-Decrypt-Encrypt (EDE) マルチ暗号化操作モードの組み合わせ',\r\n '1.3.14.3.2.26': 'Secure Hash Algorithm、リビジョン 1 (SHA-1)',\r\n '1.3.14.3.2.27': '320 ビット署名を生成する Secure Hash Algorithm 1 (SHA1) を使用するデジタル署名アルゴリズム (DSA)',\r\n '1.3.14.3.2.29': 'Secure Hash Algorithm 1 (SHA1) を使用する Rivest, Shamir and Adleman (RSA) アルゴリズム (廃止)',\r\n\r\n // Thawte 1.3.101.*\r\n '1.3.101.110': 'Diffie-Hellman 操作で使用される Curve25519 (または X25519) アルゴリズム',\r\n '1.3.101.111': 'Diffie-Hellman 操作で使用される Curve448 (または X448) アルゴリズム',\r\n '1.3.101.112': 'エドワーズ曲線デジタル署名アルゴリズム (EdDSA) Ed25519',\r\n '1.3.101.113': 'エドワーズ曲線デジタル署名アルゴリズム (EdDSA) Ed448',\r\n\r\n // University College London (UCL) 0.9.2342.19200300.*\r\n '0.9.2342.19200300.100.1.1': 'ユーザー ID (UID)',\r\n '0.9.2342.19200300.100.1.25': 'ドメイン コンポーネント (DC)',\r\n\r\n // Netscape 2.16.840.1.113730.*\r\n '2.16.840.1.113730.1.1': 'Netscape 証明書タイプ',\r\n '2.16.840.1.113730.2.5': '証明書シーケンス',\r\n '2.16.840.1.113730.4.1': 'Netscape Server Gated Crypto (SGC)',\r\n },\r\n};\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { AppfxLocale } from '@hermes-ui/angular/addons/translate';\r\n\r\nimport { translations } from './certificate-viewer.l10n';\r\n\r\n/**\r\n * The algorithm names passed to {@link crypto.subtle.digest} by the certificate viewer.\r\n */\r\nexport const enum AlgorithmName {\r\n sha1 = 'SHA-1',\r\n sha256 = 'SHA-256',\r\n}\r\n\r\n/**\r\n * Know PKI Object Identifiers.\r\n *\r\n * This is not a complete set of OIDs but only the ones that are used throughout the certificate viewer so that they can be referred easily.\r\n */\r\nexport enum KnownOids {\r\n CommonName = '2.5.4.3',\r\n Organization = '2.5.4.10',\r\n OrganizationalUnit = '2.5.4.11',\r\n KeyUsage = '2.5.29.15',\r\n ExtendedKeyUsage = '2.5.29.37',\r\n BasicCertificateConstraints = '2.5.29.19',\r\n ExtensionSubjectKeyId = '2.5.29.14',\r\n ExtensionAuthorityKeyId = '2.5.29.35',\r\n AuthorityInformationAccess = '1.3.6.1.5.5.7.1.1',\r\n SubjectAltName = '2.5.29.17',\r\n CertificatePolicies = '2.5.29.32',\r\n CrlDistributionPoints = '2.5.29.31',\r\n}\r\n\r\ntype LocaleKeysArray = Readonly<Array<keyof (typeof translations)[AppfxLocale.En]>>;\r\n\r\n/**\r\n * NOTE: The order of this array matters.\r\n * The generic name type is a numeric index which corresponds to a name in this array.\r\n *\r\n * From RFC-5280\r\n * GeneralName ::= Choice {\r\n * otherName [0] OtherName,\r\n * rfc822Name [1] IA5String,\r\n * dNSName [2] IA5String,\r\n * x400Address [3] ORAddress,\r\n * directoryName [4] value,\r\n * ediPartyName [5] EDIPartyName,\r\n * uniformResourceIdentifier [6] IA5String,\r\n * iPAddress [7] OCTET STRING,\r\n * registeredID [8] OBJECT IDENTIFIER\r\n * }\r\n */\r\nexport const generalNamesTypeToLocaleKey: LocaleKeysArray = [\r\n 'general-name-other-name',\r\n 'general-name-rfc822-name',\r\n 'general-name-dns-name',\r\n 'general-name-x400-address',\r\n 'general-name-directory-name',\r\n 'general-name-edi-party-name',\r\n 'general-name-uri',\r\n 'general-name-ip-address',\r\n 'general-name-registered-id',\r\n];\r\n\r\n/**\r\n * NOTE: The order of this array matters.\r\n * The indices of the values in the array correspond to their bit place.\r\n *\r\n * From RFC-5280\r\n * KeyUsage ::= BIT STRING {\r\n * digitalSignature (0),\r\n * nonRepudiation (1), -- recent editions of X.509 have\r\n * -- renamed this bit to contentCommitment\r\n * keyEncipherment (2),\r\n * dataEncipherment (3),\r\n * keyAgreement (4),\r\n * keyCertSign (5),\r\n * cRLSign (6),\r\n * encipherOnly (7),\r\n * decipherOnly (8) }\r\n *\r\n * Rules:\r\n * Client-KeyUsage: !({encipherOnly} && {decipherOnly})\r\n * Server-KeyUsage: !({encipherOnly} && {decipherOnly})\r\n * CA-KeyUsage: !({encipherOnly} && {decipherOnly}) && {keyCertSign}\r\n */\r\nexport const keyUsageBitIndexToLocaleKey: LocaleKeysArray = [\r\n 'key-usage-digitalSignature',\r\n 'key-usage-nonRepudiation',\r\n 'key-usage-keyEncipherment',\r\n 'key-usage-dataEncipherment',\r\n 'key-usage-keyAgreement',\r\n 'key-usage-keyCertSign',\r\n 'key-usage-cRLSign',\r\n 'key-usage-encipherOnly',\r\n 'key-usage-decipherOnly',\r\n];\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport {\r\n AppfxLocale,\r\n AppfxTranslations,\r\n DateTimeFormatOptions,\r\n DateTimeKind,\r\n defaultMissingTranslationHandler,\r\n HourFormat,\r\n} from '@hermes-ui/angular/addons/translate';\r\nimport { AttributeTypeAndValue } from 'pkijs';\r\n\r\nimport { AlgorithmName } from './certificate.constants';\r\n\r\nconst pemHeaderRegex = /(-----(BEGIN|END) CERTIFICATE-----|[\\n\\r])/g;\r\nconst whitespaceRegex = new RegExp('\\\\s+', 'g');\r\nconst oidRegex = /^(\\d+\\.)*\\d+$/;\r\n\r\nexport const dateTimeFormat: DateTimeFormatOptions = {\r\n dateTimeKind: DateTimeKind.LongDateTime,\r\n hourFormat: HourFormat.Hour24,\r\n};\r\n\r\nexport function missingTranslation(translations: AppfxTranslations, locale: AppfxLocale, key: string): string {\r\n // Handles unknown OIDs.\r\n if (oidRegex.test(key)) {\r\n return formatOid(key);\r\n }\r\n\r\n // Fallback for unknown key that is not an OID.\r\n return defaultMissingTranslationHandler(translations, locale, key);\r\n}\r\n\r\nexport function formatOid(oid: string): string {\r\n return 'OID.' + oid;\r\n}\r\n\r\nfunction formatHexByte(byte: number): string {\r\n return byte.toString(16).toUpperCase().padStart(2, '0');\r\n}\r\n\r\nfunction formatHexArray(bytes: string[], bytesPerLine = 16): string {\r\n const lines = [];\r\n for (let i = 0; i < bytes.length; i += bytesPerLine) {\r\n lines.push(bytes.slice(i, i + bytesPerLine).join(' '));\r\n }\r\n\r\n return lines.join('\\n');\r\n}\r\n\r\nexport function formatHexString(hexString: string, onSingleLine = false, bytesPerLine = 16): string {\r\n if (hexString.length % 2 === 1) {\r\n console.warn('Trying to format hex string that is not in hex format. Returning the input string.');\r\n return hexString;\r\n }\r\n\r\n const bytes = hexString.toUpperCase().match(/.{2}/g) || [];\r\n if (onSingleLine) {\r\n return bytes.join(' ');\r\n }\r\n\r\n return formatHexArray(bytes, bytesPerLine);\r\n}\r\n\r\nexport function formatHexBuffer(hexBuffer: ArrayBuffer, onSingleLine = false, bytesPerLine = 16): string {\r\n const bytes = Array.from(new Uint8Array(hexBuffer)).map(formatHexByte);\r\n\r\n if (onSingleLine) {\r\n return bytes.join(' ');\r\n }\r\n\r\n return formatHexArray(bytes, bytesPerLine);\r\n}\r\n\r\nexport function pemToBerBuffer(pem: string): ArrayBuffer {\r\n const base64Encoded = pem.replace(pemHeaderRegex, '').replace(whitespaceRegex, '');\r\n\r\n // Now that we have decoded the cert it's now in DER-encoding\r\n const derFormat = atob(base64Encoded);\r\n // And massage the cert into a BER encoded one\r\n return Uint8Array.from(derFormat.split(''), c => c.charCodeAt(0)).buffer as ArrayBuffer;\r\n}\r\n\r\nexport async function computeCertificateHash(algo: AlgorithmName, buffer: ArrayBuffer): Promise<string> {\r\n const hashBuffer = await crypto.subtle.digest(algo, buffer);\r\n return formatHexBuffer(hashBuffer);\r\n}\r\n\r\nexport function pkijsAttributeAndValuesToMap(typesAndValues: AttributeTypeAndValue[]): Map<string, string> {\r\n return new Map(\r\n typesAndValues.map(\r\n ({\r\n type,\r\n value: {\r\n valueBlock: { value },\r\n },\r\n }) => [type, value]\r\n )\r\n );\r\n}\r\n\r\n/**\r\n * Shallow array equals based on their item references.\r\n *\r\n * Implemented here to avoid depending on an external helper library for a couple of functions.\r\n */\r\nexport function arrayElementsEqual<T>(left: T[], right: T[]): boolean {\r\n if (left === right) {\r\n return true;\r\n }\r\n\r\n if (left.length !== right.length) {\r\n return false;\r\n }\r\n\r\n return left.every((element, index) => element === right[index]);\r\n}\r\n\r\n/**\r\n * Filter and map combined over string characters.\r\n *\r\n * Implemented here to avoid depending on an external helper library for a couple of functions.\r\n */\r\nexport function filterMapOverString<U>(\r\n str: string,\r\n callback: (element: string, index: number, arr: string) => NonNullable<U> | null | undefined\r\n): NonNullable<U>[] {\r\n const result = [];\r\n for (let index = 0; index < str.length; index++) {\r\n const value = callback(str.charAt(index), index, str);\r\n if (value !== null && value !== undefined) {\r\n result.push(value);\r\n }\r\n }\r\n return result;\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/member-ordering */\r\n\r\nimport { AppfxTranslateService, DateTimeService, InterpolationParams } from '@hermes-ui/angular/addons/translate';\r\n\r\nimport { dateTimeFormat, formatHexString } from '../certificate.util';\r\n\r\n/**\r\n * A translatable value that can be used as part of the certificate field value.\r\n *\r\n * This allows for flexible translation on parts of the field value after being parsed.\r\n */\r\nexport class TranslatableValue {\r\n constructor(\r\n readonly key: string,\r\n readonly args?: InterpolationParams\r\n ) {}\r\n\r\n /**\r\n * Translate the stored translation key and interpolation arguments.\r\n */\r\n translate(translateService: AppfxTranslateService): string {\r\n if (!this.args) {\r\n return translateService.translate(this.key);\r\n }\r\n\r\n const args = Object.fromEntries(\r\n Object.entries(this.args).map(([key, value]) => [\r\n key,\r\n value instanceof TranslatableValue ? value.translate(translateService) : value,\r\n ])\r\n );\r\n return translateService.translate(this.key, args);\r\n }\r\n}\r\n\r\n/**\r\n * Allowed value types for building the certificate field value.\r\n */\r\nexport type ValueType = undefined | number | string | Date | TranslatableValue;\r\n\r\n/**\r\n * Value wrapper that unifies the nonhomogeneous value types that are part of a single line and handles translation.\r\n */\r\nexport class Value {\r\n constructor(readonly value: ValueType) {}\r\n\r\n /**\r\n * Translate the wrapped value.\r\n */\r\n translate(translateService: AppfxTranslateService, dateTimeService: DateTimeService): string {\r\n if (this.value instanceof TranslatableValue) {\r\n return this.value.translate(translateService);\r\n }\r\n\r\n if (this.value instanceof Date) {\r\n return dateTimeService.format(this.value, dateTimeFormat);\r\n }\r\n\r\n return this.value?.toString() || '';\r\n }\r\n\r\n /**\r\n * Create a new Translatable Value from translation key and interpolation arguments.\r\n *\r\n * This is a helper constructor to simplify common usage.\r\n */\r\n static fromTranslatableKey(key: string, args?: InterpolationParams): Value {\r\n return new Value(new TranslatableValue(key, args));\r\n }\r\n}\r\n\r\n/**\r\n * A line in the certificate field value area.\r\n *\r\n * Every line is made up of Values which can wrap either raw values or Translatable structures.\r\n */\r\nexport class Line {\r\n constructor(readonly values: Value[]) {}\r\n\r\n /**\r\n * Translate and merge the separate values that make up the line.\r\n */\r\n translate(translateService: AppfxTranslateService, dateTimeService: DateTimeService): string {\r\n return this.values.map(value => value.translate(translateService, dateTimeService)).join('');\r\n }\r\n\r\n /**\r\n * Create a new Line from a key-value pair with a given separator.\r\n *\r\n * This is a helper constructor to simplify common usage.\r\n */\r\n static fromPair(key: Value, value: Value, separator: string): Line {\r\n return new Line([key, new Value(separator), value]);\r\n }\r\n\r\n /**\r\n * Create a new Line from an unformatted hex string.\r\n *\r\n * Formats the hex string before creating the Line.\r\n *\r\n * This is a helper constructor to simplify common usage.\r\n *\r\n * @param hex The unformatted hex string that contains an even number of [a-fA-F0-9] characters.\r\n */\r\n static fromHex(hex: string): Line {\r\n return new Line([new Value(formatHexString(hex))]);\r\n }\r\n\r\n /**\r\n * Create a new Line from a translatable key and interpolation arguments.\r\n *\r\n * This is a helper constructor to simplify common usage.\r\n * It's meant to be used if the line contains a single Translatable Value.\r\n */\r\n static fromTranslatableKey(value: string, args?: InterpolationParams): Line {\r\n return new Line([Value.fromTranslatableKey(value, args)]);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/member-ordering */\r\n\r\nimport { AppfxTranslateService, DateTimeService } from '@hermes-ui/angular/addons/translate';\r\nimport { BitString } from 'asn1js';\r\nimport {\r\n AltName,\r\n BasicConstraints,\r\n CertificatePolicies,\r\n CRLDistributionPoints,\r\n Extension,\r\n ExtKeyUsage,\r\n GeneralName,\r\n InfoAccess,\r\n RelativeDistinguishedNames,\r\n} from 'pkijs';\r\n\r\nimport { generalNamesTypeToLocaleKey, keyUsageBitIndexToLocaleKey, KnownOids } from '../certificate.constants';\r\nimport { filterMapOverString, formatHexString, formatOid } from '../certificate.util';\r\nimport { Line, TranslatableValue, Value, ValueType } from './partial-translate.model';\r\n\r\n/**\r\n * A parsed certificate field to be displayed in the certificate fields tree and the value area.\r\n */\r\nexport class CertificateField {\r\n constructor(\r\n readonly name: TranslatableValue | string,\r\n readonly children: CertificateField[] = [],\r\n readonly lines?: Line[]\r\n ) {}\r\n\r\n /**\r\n * Translates the filed name.\r\n */\r\n translateName(translateService: AppfxTranslateService): string {\r\n return this.name instanceof TranslatableValue ? this.name.translate(translateService) : this.name;\r\n }\r\n\r\n /**\r\n * Translates the filed value.\r\n */\r\n translateValue(translateService: AppfxTranslateService, dateTimeService: DateTimeService): string {\r\n return this.lines?.map(value => value.translate(translateService, dateTimeService)).join('\\n') ?? '';\r\n }\r\n\r\n /**\r\n * Create a new CertificateField that has an untranslated valued for its name and children.\r\n *\r\n * A certificate field with children is not expected to have a value.\r\n *\r\n * This is a helper constructor to simplify common usage.\r\n */\r\n static untranslatedNameWithChildren(name: string, children: CertificateField[]): CertificateField {\r\n return new CertificateField(name, children);\r\n }\r\n\r\n /**\r\n * Create a new CertificateField that has a translatable key for its name and children.\r\n *\r\n * A certificate field with children is not expected to have a value.\r\n *\r\n * This is a helper constructor to simplify common usage.\r\n */\r\n static withChildren(translatableKey: string, children: CertificateField[]): CertificateField {\r\n return new CertificateField(new TranslatableValue(translatableKey), children);\r\n }\r\n\r\n /**\r\n * Create a new CertificateField that has a translatable key for its name and a single value.\r\n *\r\n * A certificate field with a value is not expected to have children.\r\n *\r\n * This is a helper constructor to simplify common usage.\r\n */\r\n static withValue(translatableKey: string, value: ValueType): CertificateField {\r\n return new CertificateField(new TranslatableValue(translatableKey), [], [new Line([new Value(value)])]);\r\n }\r\n\r\n /**\r\n * Create a new CertificateField that has a translatable key for its name and a multi-lined value.\r\n *\r\n * A certificate field with a value is not expected to have children.\r\n *\r\n * This is a helper constructor to simplify common usage.\r\n */\r\n static withLines(translatableKey: string, lines: Line[]): CertificateField {\r\n return new CertificateField(new TranslatableValue(translatableKey), [], lines);\r\n }\r\n\r\n /**\r\n * Create a new CertificateField from pkijs's Certificate Extension structure.\r\n *\r\n * This helper constructor simplifies certificate extension parsing by covering the common extensions.\r\n */\r\n static fromExtension(extension: Extension): CertificateField {\r\n switch (extension.extnID) {\r\n case KnownOids.KeyUsage: {\r\n return this.extensionKeyUsage(extension);\r\n }\r\n case KnownOids.ExtendedKeyUsage: {\r\n return this.extensionExtendedKeyUsage(extension);\r\n }\r\n case KnownOids.BasicCertificateConstraints: {\r\n return this.extensionBasicCertificateConstraints(extension);\r\n }\r\n case KnownOids.ExtensionSubjectKeyId: {\r\n return this.extensionKeyId(extension, 4);\r\n }\r\n case KnownOids.ExtensionAuthorityKeyId: {\r\n return this.extensionKeyId(extension, 6);\r\n }\r\n case KnownOids.AuthorityInformationAccess: {\r\n return this.extensionAuthorityInfoAccess(extension);\r\n }\r\n case KnownOids.SubjectAltName: {\r\n const altName: AltName = extension.parsedValue;\r\n return this.fromExtensionWithLines(extension, this.parseGeneralNames(altName.altNames));\r\n }\r\n case KnownOids.CertificatePolicies: {\r\n return this.extensionCertificatePolicies(extension);\r\n }\r\n case KnownOids.CrlDistributionPoints: {\r\n return this.extensionHermesDistributionPoints(extension);\r\n }\r\n }\r\n\r\n return this.fromExtensionWithLines(extension, [Line.fromHex(extension.extnValue.toString('hex'))]);\r\n }\r\n\r\n private static extensionKeyUsage(extension: Extension): CertificateField {\r\n const value = (extension.parsedValue as BitString).valueBlock;\r\n const bits = value.valueHexView.reduce((acc, byte) => acc + byte.toString(2), '').slice(0, -value.unusedBits);\r\n\r\n const lines = filterMapOverString(bits, (bit, index) => (bit === '1' ? index : undefined)).map(index =>\r\n Line.fromTranslatableKey(keyUsageBitIndexToLocaleKey[index])\r\n );\r\n\r\n return this.fromExtensionWithLines(extension, lines);\r\n }\r\n\r\n private static extensionExtendedKeyUsage(extension: Extension): CertificateField {\r\n const keyUsage = extension.parsedValue as ExtKeyUsage;\r\n return this.fromExtensionWithLines(\r\n extension,\r\n keyUsage.keyPurposes.map(purpose =>\r\n Line.fromPair(Value.fromTranslatableKey(purpose), new Value(`(${formatOid(purpose)})`), ' ')\r\n )\r\n );\r\n }\r\n\r\n private static extensionBasicCertificateConstraints(extension: Extension): CertificateField {\r\n const basicConstraints: BasicConstraints = extension.parsedValue;\r\n const lines = [Line.fromTranslatableKey(basicConstraints.cA ? 'is-cert-authority' : 'is-not-cert-authority')];\r\n if (basicConstraints.cA) {\r\n lines.push(\r\n Line.fromTranslatableKey('max-number-intermediate-CAs', {\r\n maxNumber:\r\n // eslint-disable-next-line eqeqeq\r\n basicConstraints.pathLenConstraint == null\r\n ? new TranslatableValue('unlimited')\r\n : basicConstraints.pathLenConstraint.toString(),\r\n })\r\n );\r\n }\r\n return this.fromExtensionWithLines(extension, lines);\r\n }\r\n\r\n private static extensionKeyId(extension: Extension, removeFirstNumberOfBytes: number): CertificateField {\r\n const hex = extension.extnValue.toString('hex').slice(removeFirstNumberOfBytes * 2);\r\n\r\n return this.fromExtensionWithLines(extension, [\r\n Line.fromTranslatableKey('key-id', {\r\n id: formatHexString(hex),\r\n }),\r\n ]);\r\n }\r\n\r\n private static extensionAuthorityInfoAccess(extension: Extension): CertificateField {\r\n const infoAccess: InfoAccess = extension.parsedValue;\r\n const value = infoAccess.accessDescriptions.map(description => {\r\n return new Line([\r\n Value.fromTranslatableKey(description.accessMethod),\r\n new Value(': '),\r\n ...this.translatableGeneralName(description.accessLocation, ': '),\r\n ]);\r\n });\r\n return this.fromExtensionWithLines(extension, value);\r\n }\r\n\r\n private static extensionCertificatePolicies(extension: Extension): CertificateField {\r\n const policies: CertificatePolicies = extension.parsedValue;\r\n const value = policies.certificatePolicies.flatMap(policy => {\r\n return [\r\n Line.fromTranslatableKey(policy.policyIdentifier),\r\n ...(policy.policyQualifiers?.map(qualifier => {\r\n return Line.fromPair(\r\n Value.fromTranslatableKey(qualifier.policyQualifierId),\r\n new Value(qualifier.qualifier.toString()),\r\n ': '\r\n );\r\n }) ?? []),\r\n ];\r\n });\r\n\r\n return this.fromExtensionWithLines(extension, value);\r\n }\r\n\r\n private static extensionHermesDistributionPoints(extension: Extension): CertificateField {\r\n const crlDistPoints: CRLDistributionPoints = extension.parsedValue;\r\n const value = crlDistPoints.distributionPoints.reduce((result, crlDistPoint) => {\r\n if (crlDistPoint.distributionPoint) {\r\n if (crlDistPoint.distributionPoint instanceof RelativeDistinguishedNames) {\r\n const points = crlDistPoint.distributionPoint.typesAndValues.map(typeAndValue => {\r\n return Line.fromPair(new Value(typeAndValue.type), new Value(typeAndValue.value.toString()), ': ');\r\n });\r\n result.push(...points);\r\n } else {\r\n result.push(...this.parseGeneralNames(crlDistPoint.distributionPoint));\r\n }\r\n }\r\n if (crlDistPoint.cRLIssuer) {\r\n result.push(Line.fromTranslatableKey('hermes-issuer'), ...this.parseGeneralNames(crlDistPoint.cRLIssuer));\r\n }\r\n if (crlDistPoint.reasons) {\r\n result.push(Line.fromTranslatableKey('reasons'), new Line([new Value(crlDistPoint.reasons.toString('ascii'))]));\r\n }\r\n\r\n return result;\r\n }, [] as Line[]);\r\n\r\n return this.fromExtensionWithLines(extension, value);\r\n }\r\n\r\n private static fromExtensionWithLines(extension: Extension, lines: Line[]): CertificateField {\r\n const critical = new Line([Value.fromTranslatableKey(extension.critical ? 'critical' : 'not-critical')]);\r\n return this.withLines(extension.extnID, [critical, ...lines]);\r\n }\r\n\r\n private static parseGeneralNames(generalNames: GeneralName[]): Line[] {\r\n return generalNames.map(generalName => {\r\n return new Line(this.translatableGeneralName(generalName, ': '));\r\n });\r\n }\r\n\r\n private static translatableGeneralName(generalName: GeneralName, separator: string): Value[] {\r\n return [\r\n Value.fromTranslatableKey(generalNamesTypeToLocaleKey[generalName.type]),\r\n new Value(separator),\r\n new Value(generalName.value.toString()),\r\n ];\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { fromBER } from 'asn1js';\r\nimport { ECPublicKey, Certificate as PkijsCertificate, RSAPublicKey } from 'pkijs';\r\n\r\nimport { AlgorithmName, KnownOids } from '../certificate.constants';\r\nimport {\r\n computeCertificateHash,\r\n formatHexString,\r\n pemToBerBuffer,\r\n pkijsAttributeAndValuesToMap,\r\n} from '../certificate.util';\r\nimport { CertificateField } from './certificate-field.model';\r\nimport { Line, TranslatableValue, Value } from './partial-translate.model';\r\n\r\n/**\r\n * Contains the Relative Distinguished Names of the subject and issuer in a given certificate.\r\n *\r\n * This structure is to be used in the general section of the certificate viewer and thus doesn't need to contain all of the RDNs.\r\n * Instead we're only interested in the `common name`, `organization` and `organization unit` values.\r\n */\r\nexport class RelativeDistinguishedNamesModel {\r\n constructor(\r\n readonly commonName: string,\r\n readonly organization: string,\r\n readonly organizationalUnit: string\r\n ) {}\r\n\r\n /**\r\n * Create the RDNs model from an OID to value map.\r\n */\r\n static fromMap(map: Map<string, string>): RelativeDistinguishedNamesModel {\r\n return new RelativeDistinguishedNamesModel(\r\n map.get(KnownOids.CommonName) || '',\r\n map.get(KnownOids.Organization) || '',\r\n map.get(KnownOids.OrganizationalUnit) || ''\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Contains the certificate fingerprints.\r\n */\r\nexport interface Fingerprints {\r\n sha1: string;\r\n sha256: string;\r\n}\r\n\r\n/**\r\n * The certificate model used by the certificate viewer.\r\n *\r\n * Contains all the information necessary for presenting the certificate to the user. This includes:\r\n * - The SHA1 and SHA256 fingerprints.\r\n * - The subject and issuer RDNs.\r\n * - The common certificate fields which are parsed and localized while the rest are presented as OIDs with hex values.\r\n * - The raw pkijs model.\r\n */\r\nexport class Certificate {\r\n /**\r\n * The root of the parsed certificate fields tree.\r\n *\r\n * Meant to be rendered with a tree component.\r\n */\r\n readonly rootField: CertificateField;\r\n\r\n /**\r\n * The certificate issuer RDNs.\r\n */\r\n readonly issuer: RelativeDistinguishedNamesModel;\r\n\r\n /**\r\n * The certificate subject RDNs.\r\n */\r\n readonly subject: RelativeDistinguishedNamesModel;\r\n\r\n /**\r\n * @param certificate The pkijs Certificate model.\r\n * @param fingerprints The SHA-1 and SHA-256 fingerprints of the certificate.\r\n */\r\n private constructor(\r\n readonly certificate: PkijsCertificate,\r\n readonly fingerprints: Fingerprints\r\n ) {\r\n this.issuer = Certificate.issuerRdns(certificate);\r\n this.subject = Certificate.subjectRdns(certificate);\r\n\r\n this.rootField = this.buildFieldsTree();\r\n }\r\n\r\n /**\r\n * Create a new CertificateModel form a PEM encoded certificate.\r\n *\r\n * The asn1js and pkijs libraries are used in combination to parse the PEM encoded certificate.\r\n */\r\n static async fromPemEncodedCertificate(certificatePem: string): Promise<Certificate> {\r\n const berFormat = pemToBerBuffer(certificatePem);\r\n const fingerprints = await Certificate.computeFingerprints(berFormat);\r\n\r\n const asn1 = fromBER(berFormat);\r\n\r\n const certificate = new PkijsCertificate({ schema: asn1.result });\r\n\r\n return new Certificate(certificate, fingerprints);\r\n }\r\n\r\n /**\r\n * Computes the SHA1 and SHA256 fingerprints\r\n */\r\n private static async computeFingerprints(berEncodedCert: ArrayBuffer): Promise<Fingerprints> {\r\n return Promise.all([\r\n computeCertificateHash(AlgorithmName.sha1, berEncodedCert),\r\n computeCertificateHash(AlgorithmName.sha256, berEncodedCert),\r\n ]).then(([sha1, sha256]) => ({ sha1, sha256 }));\r\n }\r\n\r\n private static issuerRdns(certificate: PkijsCertificate): RelativeDistinguishedNamesModel {\r\n const map = pkijsAttributeAndValuesToMap(certificate.issuer.typesAndValues);\r\n return RelativeDistinguishedNamesModel.fromMap(map);\r\n }\r\n\r\n private static subjectRdns(certificate: PkijsCertificate): RelativeDistinguishedNamesModel {\r\n const map = pkijsAttributeAndValuesToMap(certificate.subject.typesAndValues);\r\n return RelativeDistinguishedNamesModel.fromMap(map);\r\n }\r\n\r\n private buildFieldsTree(): CertificateField {\r\n const children = [\r\n this.fieldVersion(),\r\n this.fieldValidity(),\r\n this.fieldSerialNumber(),\r\n this.fieldIssuer(),\r\n this.fieldSubject(),\r\n this.fieldSignatureAlgorithm(),\r\n this.fieldSignatureValue(),\r\n this.fieldFingerprints(),\r\n this.fieldSubjectPublicKeyInfo(),\r\n ];\r\n const extensions = this.extensions();\r\n if (extensions) {\r\n children.push(extensions);\r\n }\r\n return CertificateField.untranslatedNameWithChildren(this.subject.commonName, children);\r\n }\r\n\r\n private fieldVersion(): CertificateField {\r\n return CertificateField.withValue(\r\n 'version',\r\n new TranslatableValue('version-format', {\r\n version: this.certificate.version + 1,\r\n })\r\n );\r\n }\r\n\r\n private fieldValidity(): CertificateField {\r\n const notBefore = CertificateField.withValue('not-before', this.certificate.notBefore.value);\r\n const notAfter = CertificateField.withValue('not-after', this.certificate.notAfter.value);\r\n\r\n return CertificateField.withChildren('validity', [notBefore, notAfter]);\r\n }\r\n\r\n private fieldSerialNumber(): CertificateField {\r\n return CertificateField.withValue(\r\n 'serial-number',\r\n formatHexString(this.certificate.serialNumber.toString('hex').slice(4), true)\r\n );\r\n }\r\n\r\n private fieldIssuer(): CertificateField {\r\n const lines = this.certificate.issuer.typesAndValues.map(typeAndValue => {\r\n return Line.fromPair(\r\n Value.fromTranslatableKey(typeAndValue.type),\r\n new Value(typeAndValue.value.valueBlock.value),\r\n ' = '\r\n );\r\n });\r\n\r\n return CertificateField.withLines('issuer', lines);\r\n }\r\n\r\n private fieldSubject(): CertificateField {\r\n const lines = this.certificate.subject.typesAndValues.map(typeAndValue => {\r\n return Line.fromPair(\r\n Value.fromTranslatableKey(typeAndValue.type),\r\n new Value(typeAndValue.value.valueBlock.value),\r\n ' = '\r\n );\r\n });\r\n\r\n return CertificateField.withLines('subject', lines);\r\n }\r\n\r\n private fieldSignatureAlgorithm(): CertificateField {\r\n return CertificateField.withValue(\r\n 'certificate-signature-algorithm',\r\n new TranslatableValue(this.certificate.signatureAlgorithm.algorithmId)\r\n );\r\n }\r\n\r\n private fieldSignatureValue(): CertificateField {\r\n return CertificateField.withValue(\r\n 'certificate-signature-value',\r\n formatHexString(this.certificate.signatureValue.toString('hex').slice(10))\r\n );\r\n }\r\n\r\n private fieldFingerprints(): CertificateField {\r\n const sha1Fp = CertificateField.withValue('sha-1-fingerprint', this.fingerprints.sha1);\r\n const sha256Fp = CertificateField.withValue('sha-256-fingerprint', this.fingerprints.sha256);\r\n\r\n return CertificateField.withChildren('fingerprints', [sha1Fp, sha256Fp]);\r\n }\r\n\r\n private fieldSubjectPublicKeyInfo(): CertificateField {\r\n const subjPubKeyAlg = CertificateField.withValue(\r\n 'subject-public-key-algorithm',\r\n new TranslatableValue(this.certificate.subjectPublicKeyInfo.algorithm.algorithmId)\r\n );\r\n const subjPubKey = CertificateField.withLines('subjects-public-key', this.subfieldSubjectPublicKeyValue());\r\n\r\n return CertificateField.withChildren('subject-public-key-info', [subjPubKeyAlg, subjPubKey]);\r\n }\r\n\r\n private subfieldSubjectPublicKeyValue(): Line[] {\r\n const parsedPubKey = this.certificate.subjectPublicKeyInfo.parsedKey;\r\n\r\n if (parsedPubKey instanceof RSAPublicKey) {\r\n const modulusView = parsedPubKey.modulus.valueBlock.valueHexView;\r\n const modulusBitLength =\r\n modulusView[0] === 0x00\r\n ? (parsedPubKey.modulus.valueBlock.valueHexView.byteLength - 1) * 8\r\n : parsedPubKey.modulus.valueBlock.valueHexView.byteLength * 8;\r\n\r\n // RSA public key consists of modulus and exponent.\r\n return [\r\n Line.fromTranslatableKey('modulus-bits', {\r\n bits: modulusBitLength.toString(),\r\n }),\r\n Line.fromHex(parsedPubKey.modulus.toString('hex').slice(8)),\r\n Line.fromTranslatableKey('public-exponent'),\r\n Line.fromHex(parsedPubKey.publicExponent.toString('hex').slice(4)),\r\n ];\r\n } else if (parsedPubKey instanceof ECPublicKey) {\r\n return [\r\n Line.fromTranslatableKey('named-curve', {\r\n curve: parsedPubKey.namedCurve,\r\n }),\r\n Line.fromHex(parsedPubKey.toString('hex')),\r\n ];\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n private extensions(): CertificateField | undefined {\r\n if (!this.certificate.extensions) {\r\n return undefined;\r\n }\r\n\r\n return CertificateField.withChildren(\r\n 'extensions',\r\n this.certificate.extensions.map(extension => CertificateField.fromExtension(extension))\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/member-ordering */\r\nimport { Certificate } from './certificate.model';\r\n\r\n/**\r\n * Contains a certificate chain and provides convenient methods for accessing the common certificates of interest.\r\n *\r\n * This is linear model which is meant to be displayed in a tree structure and thus contains methods for interacting with Clarity's tree.\r\n */\r\nexport class CertificateChain {\r\n /**\r\n * Used to resolve the next certificate in the chain beginning with the root certificate.\r\n */\r\n private readonly nextCertificateMap: Map<Certificate, Certificate | undefined>;\r\n\r\n /**\r\n * @param chain The parsed certificate chain.\r\n */\r\n private constructor(readonly chain: Certificate[]) {\r\n this.nextCertificateMap = new Map(\r\n chain\r\n .slice()\r\n .reverse()\r\n .map((cert, index, arr) => [cert, arr[index + 1]])\r\n );\r\n }\r\n\r\n /**\r\n * Create a new CertificateChainModel from a PEM encoded certificate chain.\r\n *\r\n * @param pemEncodedCertificates The certificate chain where each certificate is a PEM encoded string.\r\n * It begins with the leaf certificate as the first element and ends with the root certificate.\r\n */\r\n static async fromPemEncodedCertificatesChain(pemEncodedCertificates: string[]): Promise<CertificateChain> {\r\n // The certificates order must be preserved but they don't need to be parsed synchronously relative to each other.\r\n const chain = await Promise.all(pemEncodedCertificates.map(Certificate.fromPemEncodedCertificate));\r\n\r\n return new CertificateChain(chain);\r\n }\r\n\r\n /**\r\n * Retrieve the root certificate in the chain.\r\n */\r\n get rootCertificate(): Certificate | undefined {\r\n return this.chain[this.chain.length - 1];\r\n }\r\n\r\n /**\r\n * Retrieve the leaf certificate in the chain.\r\n */\r\n get leafCertificate(): Certificate | undefined {\r\n return this.chain[0];\r\n }\r\n\r\n /**\r\n * Resolve the next certificate in the chain beginning with the root certificate.\r\n *\r\n * This method is used by the certificate details tree which begins with the root certificate in the chain.\r\n *\r\n * Confusion may arise here since the RFC-5246 certificate chain array begins with the leaf certificate and ends with the root certificate\r\n * but the tree renders it in reverse order which is more intuitive to the user.\r\n */\r\n nextCertificateInChain(certificate?: Certificate): Certificate | undefined {\r\n return certificate && this.nextCertificateMap.get(certificate);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { AppfxTranslateService, DateTimeService } from '@hermes-ui/angular/addons/translate';\r\n\r\nimport { CertificateField } from '../models/certificate-field.model';\r\n\r\n@Pipe({\r\n name: 'translateField',\r\n standalone: false,\r\n pure: false,\r\n})\r\nexport class CertificateViewerTranslateFieldPipe implements PipeTransform {\r\n constructor(\r\n private readonly appfxTranslateService: AppfxTranslateService,\r\n private readonly dateTimeService: DateTimeService\r\n ) {}\r\n\r\n transform(field: CertificateField | undefined, prop: 'name' | 'value'): string {\r\n if (!field) {\r\n return '';\r\n }\r\n\r\n switch (prop) {\r\n case 'name': {\r\n return field.translateName(this.appfxTranslateService);\r\n }\r\n case 'value': {\r\n return field.translateValue(this.appfxTranslateService, this.dateTimeService);\r\n }\r\n default: {\r\n throw new Error('Invalid certificate field property');\r\n }\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, Input, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';\r\n\r\nimport { CertificateChain } from '../models/certificate-chain.model';\r\nimport { CertificateField } from '../models/certificate-field.model';\r\nimport { Certificate } from '../models/certificate.model';\r\nimport { TopHeadingLevel } from '../models/heading-level.model';\r\n\r\n/**\r\n * The details section of the certificate viewer.\r\n *\r\n * This section allows for exploring the provided certificate chain. It's comprised of a certificate chain tree,\r\n * a selected certificate fields tree and a selected field value.\r\n *\r\n * - The certificate chain tree is a linear tree that represents the certificate chain hierarchy.\r\n * Selecting a node in this tree populates the fields tree with their respective values.\r\n * - The fields tree is an explorer for all of the selected certificate fields. The most commonly used fields are\r\n * localized and their values are converted to a human-readable format.\r\n * - The field value is a monospace area that contains the value of the selected field from the fields tree.\r\n */\r\n@Component({\r\n selector: 'appfx-certificate-viewer-details',\r\n standalone: false,\r\n templateUrl: 'certificate-viewer-details.component.html',\r\n styleUrls: ['certificate-viewer-details.component.scss'],\r\n})\r\nexport class CertificateViewerDetailsComponent implements OnChanges {\r\n @Input() certificateChain?: CertificateChain;\r\n @Input() topHeadingLevel: TopHeadingLevel = 5;\r\n @Input() headingTemplate: TemplateRef<unknown>;\r\n\r\n selectedCertificate?: Certificate;\r\n selectedCertificateField?: CertificateField;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.certificateChain) {\r\n const currentValue = changes.certificateChain.currentValue as CertificateChain | undefined;\r\n this.selectCertificate(currentValue?.leafCertificate);\r\n }\r\n }\r\n\r\n selectCertificate(certificate?: Certificate) {\r\n if (this.selectedCertificate !== certificate) {\r\n this.selectedCertificateField = undefined;\r\n }\r\n this.selectedCertificate = certificate;\r\n }\r\n\r\n selectCertificateField(certificateField?: CertificateField) {\r\n this.selectedCertificateField = certificateField;\r\n }\r\n\r\n isSelected(certificate?: Certificate): boolean {\r\n return certificate === this.selectedCertificate;\r\n }\r\n\r\n isSelectedField(certificateField?: CertificateField): boolean {\r\n return certificateField === this.selectedCertificateField;\r\n }\r\n\r\n getNextCertificate = (certificate?: Certificate): Certificate[] => {\r\n const next = this.certificateChain?.nextCertificateInChain(certificate);\r\n return next ? [next] : [];\r\n };\r\n\r\n getFieldsChildren = (certificateField?: CertificateField): CertificateField[] => {\r\n return certificateField?.children ?? [];\r\n };\r\n}\r\n","<!--\r\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n ~ This software is released under MIT license.\r\n ~ The full license information can be found in LICENSE in the root directory of this project.\r\n -->\r\n<section class=\"certificate-chain\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headingTemplate;\r\n context: {\r\n level: topHeadingLevel + 1,\r\n textContent: 'certificate-hierarchy' | translate,\r\n class: 'certificate-viewer-details-subtitle',\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n\r\n <hermes-tree class=\"content\">\r\n <hermes-tree-node\r\n *hermesRecursiveFor=\"let certificate of certificateChain?.rootCertificate; getChildren: getNextCertificate\"\r\n [hermesExpanded]=\"true\"\r\n >\r\n <button\r\n class=\"hermes-treenode-link\"\r\n [class.active]=\"isSelected(certificate)\"\r\n (click)=\"selectCertificate(certificate)\"\r\n tabindex=\"-1\"\r\n >\r\n {{ certificate?.subject.commonName }}\r\n </button>\r\n </hermes-tree-node>\r\n </hermes-tree>\r\n</section>\r\n\r\n<section class=\"fields\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headingTemplate;\r\n context: {\r\n level: topHeadingLevel + 1,\r\n textContent: 'certificate-fields' | translate,\r\n class: 'certificate-viewer-details-subtitle',\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n\r\n <hermes-tree class=\"content\">\r\n <hermes-tree-node\r\n *hermesRecursiveFor=\"let field of this.selectedCertificate?.rootField; getChildren: getFieldsChildren\"\r\n [hermesExpanded]=\"true\"\r\n >\r\n <button\r\n class=\"hermes-treenode-link\"\r\n [class.active]=\"isSelectedField(field)\"\r\n (click)=\"selectCertificateField(field)\"\r\n tabindex=\"-1\"\r\n >\r\n {{ field | translateField: 'name' }}\r\n </button>\r\n </hermes-tree-node>\r\n </hermes-tree>\r\n</section>\r\n\r\n<section class=\"value\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headingTemplate;\r\n context: {\r\n level: topHeadingLevel + 1,\r\n textContent: 'field-value' | translate,\r\n class: 'certificate-viewer-details-subtitle',\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n\r\n <pre class=\"content\">{{ selectedCertificateField | translateField: 'value' }}</pre>\r\n</section>\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, Input, TemplateRef } from '@angular/core';\r\nimport { DateTimeFormatOptions } from '@hermes-ui/angular/addons/translate';\r\n\r\nimport { KnownOids } from '../certificate.constants';\r\nimport { dateTimeFormat } from '../certificate.util';\r\nimport { Certificate } from '../models/certificate.model';\r\nimport { TopHeadingLevel } from '../models/heading-level.model';\r\n\r\n/**\r\n * The general section of the certificate viewer.\r\n *\r\n * This section contains the leaf certificate's:\r\n * 1. Subject (Issuer To) and Issuer (Issuer By) common RDNs:\r\n * - Common Name\r\n * - Organization\r\n * - Organization Unit\r\n * 2. Validity period\r\n * 3. Fingerprints (SHA-1 and SHA-256)\r\n */\r\n@Component({\r\n selector: 'appfx-certificate-viewer-general',\r\n standalone: false,\r\n templateUrl: 'certificate-viewer-general.component.html',\r\n styleUrls: ['certificate-viewer-general.component.scss'],\r\n})\r\nexport class CertificateViewerGeneralComponent {\r\n readonly KnownOids = KnownOids;\r\n readonly dateTimeFormat: DateTimeFormatOptions = dateTimeFormat;\r\n\r\n @Input() certificate?: Certificate;\r\n @Input() topHeadingLevel: TopHeadingLevel = 5;\r\n @Input() headingTemplate: TemplateRef<unknown>;\r\n}\r\n","<!--\r\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n ~ This software is released under MIT license.\r\n ~ The full license information can be found in LICENSE in the root directory of this project.\r\n -->\r\n<section>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headingTemplate;\r\n context: {\r\n level: topHeadingLevel + 1,\r\n textContent: 'issued-to' | translate,\r\n class: 'certificate-viewer-general-subtitle',\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"relativeDistinguishedNames; context: { certificate: certificate?.subject }\"\r\n ></ng-container>\r\n</section>\r\n\r\n<section>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headingTemplate;\r\n context: {\r\n level: topHeadingLevel + 1,\r\n textContent: 'issued-by' | translate,\r\n class: 'certificate-viewer-general-subtitle',\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"relativeDistinguishedNames; context: { certificate: certificate?.issuer }\"\r\n ></ng-container>\r\n</section>\r\n\r\n<section>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headingTemplate;\r\n context: {\r\n level: topHeadingLevel + 1,\r\n textContent: 'validity-period' | translate,\r\n class: 'certificate-viewer-general-subtitle',\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n\r\n <dl class=\"key-value\">\r\n <dt>{{ 'issued-on' | translate }}</dt>\r\n <dd id=\"issue-date\">\r\n {{ certificate?.certificate?.notBefore?.value | dateTime: dateTimeFormat }}\r\n </dd>\r\n </dl>\r\n <dl class=\"key-value\">\r\n <dt>{{ 'expires-on' | translate }}</dt>\r\n <dd id=\"expiry-date\">\r\n {{ certificate?.certificate?.notAfter?.value | dateTime: dateTimeFormat }}\r\n </dd>\r\n </dl>\r\n</section>\r\n\r\n<section class=\"fingerprints\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headingTemplate;\r\n context: {\r\n level: topHeadingLevel + 1,\r\n textContent: 'fingerprints' | translate,\r\n class: 'certificate-viewer-general-subtitle',\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n\r\n <dl class=\"key-value\">\r\n <dt>{{ 'sha-256-fingerprint' | translate }}</dt>\r\n <dd class=\"pre-wrap\">{{ certificate?.fingerprints?.sha256 }}</dd>\r\n </dl>\r\n <dl class=\"key-value\">\r\n <dt>{{ 'sha-1-fingerprint' | translate }}</dt>\r\n <dd class=\"pre-wrap\">{{ certificate?.fingerprints?.sha1 }}</dd>\r\n </dl>\r\n</section>\r\n\r\n<ng-template #relativeDistinguishedNames let-certificate=\"certificate\">\r\n <dl class=\"key-value\">\r\n <dt>{{ KnownOids.CommonName | translate }}</dt>\r\n <dd id=\"issued-cn\">\r\n {{ certificate?.commonName || ('not-part-of-certificate' | translate) }}\r\n </dd>\r\n </dl>\r\n <dl class=\"key-value\">\r\n <dt>{{ KnownOids.Organization | translate }}</dt>\r\n <dd id=\"issued-o\">\r\n {{ certificate?.organization || ('not-part-of-certificate' | translate) }}\r\n </dd>\r\n </dl>\r\n <dl class=\"key-value\">\r\n <dt>{{ KnownOids.OrganizationalUnit | translate }}</dt>\r\n <dd id=\"issued-ou\">\r\n {{ certificate?.organizationalUnit || ('not-part-of-certificate' | translate) }}\r\n </dd>\r\n </dl>\r\n</ng-template>\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { ChangeDetectorRef, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { appfxMissingTranslationToken, AppfxTranslateService, appfxTranslationsToken } from '@hermes-ui/angular/addons/translate';\r\n\r\nimport { translations } from '../certificate-viewer.l10n';\r\nimport { KnownOids } from '../certificate.constants';\r\nimport { arrayElementsEqual, missingTranslation } from '../certificate.util';\r\nimport { CertificateChain } from '../models/certificate-chain.model';\r\nimport { TopHeadingLevel } from '../models/heading-level.model';\r\n\r\n/**\r\n * Displays detailed information about a X.509 certificate chain.\r\n *\r\n * The component renders information for a PEM encoded certificate chain in two separate sections.\r\n * 1. The former is the general tab which contains common information for the leaf certificate\r\n * like validity, subject, issuer and fingerprints.\r\n * 2. The latter is the details tab contains the whole certificate chain with each individual\r\n * certificate's fields and their corresponding values. The most common fields are presented\r\n * in a localized human readable format. The rest of the fields are presented as PKI object\r\n * identifiers (OIDs) and their values are rendered as a formatted hex string.\r\n *\r\n * @example <caption>A certificate chain</caption>\r\n * ```html\r\n * <appfx-certificate-viewer [pemEncodedCertificatesChain]=\"pemEncodedCertificatesChain\">\r\n * </appfx-certificate-viewer>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'appfx-certificate-viewer',\r\n standalone: false,\r\n templateUrl: 'certificate-viewer.component.html',\r\n styleUrls: ['certificate-viewer.component.scss'],\r\n providers: [\r\n AppfxTranslateService,\r\n { provide: appfxMissingTranslationToken, useValue: missingTranslation },\r\n { provide: appfxTranslationsToken, useValue: translations },\r\n ],\r\n})\r\nexport class CertificateViewerComponent implements OnChanges {\r\n readonly KnownOids = KnownOids;\r\n\r\n /**\r\n * Accepts a certificate chain where each certificate is PEM encoded.\r\n * The first element is the leaf certificate and the last element is the root certificate.\r\n * This order is described in the TLS 1.2 RFC section 7.4.2.\r\n */\r\n @Input() pemEncodedCertificatesChain: string[];\r\n\r\n /**\r\n * The top heading level for this component.\r\n * All nested headings are incremented automatically. Use to satisfy WCAG heading hierarchy.\r\n */\r\n @Input() topHeadingLevel: TopHeadingLevel = 5;\r\n\r\n certificateChain?: CertificateChain;\r\n parseError?: string;\r\n loading = false;\r\n\r\n private certificateChainPromise?: Promise<CertificateChain>;\r\n\r\n constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['pemEncodedCertificatesChain']) {\r\n const change = changes['pemEncodedCertificatesChain'];\r\n const current = change.currentValue;\r\n const previous = change.previousValue;\r\n\r\n if (\r\n !change.isFirstChange() &&\r\n (!Array.isArray(current) || (Array.isArray(previous) && arrayElementsEqual(current, previous)))\r\n ) {\r\n return;\r\n }\r\n\r\n this.parseCertificateChain();\r\n }\r\n }\r\n\r\n private parseCertificateChain(): void {\r\n this.loading = true;\r\n this.certificateChain = undefined;\r\n this.parseError = undefined;\r\n\r\n const promise = CertificateChain.fromPemEncodedCertificatesChain(this.pemEncodedCertificatesChain);\r\n this.certificateChainPromise = promise;\r\n promise\r\n .then(result => {\r\n if (this.certificateChainPromise === promise) {\r\n this.certificateChain = result;\r\n }\r\n })\r\n .catch((err: unknown) => {\r\n if (this.certificateChainPromise === promise) {\r\n this.parseError = err instanceof Error ? err.message : String(err);\r\n }\r\n })\r\n .finally(() => {\r\n if (this.certificateChainPromise === promise) {\r\n this.loading = false;\r\n this.cdr.markForCheck();\r\n }\r\n });\r\n }\r\n}\r\n","<!--\r\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n ~ This software is released under MIT license.\r\n ~ The full license information can be found in LICENSE in the root directory of this project.\r\n -->\r\n<hermes-spinner *ngIf=\"loading; else loaded\">{{ 'loading' | translate }}</hermes-spinner>\r\n<ng-template #loaded>\r\n <hermes-alert *ngIf=\"parseError\" hermesAlertType=\"danger\" [hermesAlertClosable]=\"false\">\r\n <hermes-alert-item\r\n ><span class=\"alert-text\">{{ parseError }}</span></hermes-alert-item\r\n >\r\n </hermes-alert>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n heading;\r\n context: {\r\n level: topHeadingLevel,\r\n textContent:\r\n 'title'\r\n | translate\r\n : {\r\n title: certificateChain?.leafCertificate?.subject?.commonName,\r\n },\r\n class: 'certificate-viewer-title',\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n\r\n <hermes-tabs>\r\n <hermes-tab>\r\n <button hermesTabLink>{{ 'general' | translate }}</button>\r\n <hermes-tab-content *hermesIfActive>\r\n <appfx-certificate-viewer-general\r\n [certificate]=\"certificateChain?.leafCertificate\"\r\n [topHeadingLevel]=\"topHeadingLevel\"\r\n [headingTemplate]=\"heading\"\r\n >\r\n </appfx-certificate-viewer-general>\r\n </hermes-tab-content>\r\n </hermes-tab>\r\n\r\n <hermes-tab>\r\n <button hermesTabLink>{{ 'details' | translate }}</button>\r\n <hermes-tab-content *hermesIfActive>\r\n <appfx-certificate-viewer-details\r\n [certificateChain]=\"certificateChain\"\r\n [topHeadingLevel]=\"topHeadingLevel\"\r\n [headingTemplate]=\"heading\"\r\n >\r\n </appfx-certificate-viewer-details>\r\n </hermes-tab-content>\r\n </hermes-tab>\r\n </hermes-tabs>\r\n</ng-template>\r\n\r\n<ng-template #heading let-level=\"level\" let-textContent=\"textContent\" let-class=\"class\">\r\n <ng-container [ngSwitch]=\"level\">\r\n <h1 *ngSwitchCase=\"1\" [ngClass]=\"class\">{{ textContent }}</h1>\r\n <h2 *ngSwitchCase=\"2\" [ngClass]=\"class\">{{ textContent }}</h2>\r\n <h3 *ngSwitchCase=\"3\" [ngClass]=\"class\">{{ textContent }}</h3>\r\n <h4 *ngSwitchCase=\"4\" [ngClass]=\"class\">{{ textContent }}</h4>\r\n <h5 *ngSwitchCase=\"5\" [ngClass]=\"class\">{{ textContent }}</h5>\r\n <h6 *ngSwitchCase=\"6\" [ngClass]=\"class\">{{ textContent }}</h6>\r\n <div *ngSwitchDefault role=\"heading\" [attr.aria-level]=\"level\" [ngClass]=\"class\">{{ textContent }}</div>\r\n </ng-container>\r\n</ng-template>\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AppfxTranslateModule } from '@hermes-ui/angular/addons/translate';\r\nimport {\r\n angleIcon,\r\n ClarityIcons,\r\n HermesAlertModule,\r\n HermesSpinnerModule,\r\n HermesTabsModule,\r\n HermesTreeViewModule,\r\n} from '@hermes-ui/angular';\r\n\r\nimport { CertificateViewerComponent } from './certificate-viewer/certificate-viewer.component';\r\nimport { CertificateViewerDetailsComponent } from './certificate-viewer-details/certificate-viewer-details.component';\r\nimport { CertificateViewerGeneralComponent } from './certificate-viewer-general/certificate-viewer-general.component';\r\nimport { CertificateViewerTranslateFieldPipe } from './certificate-viewer-translate-field/certificate-viewer-translate-field.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n AppfxTranslateModule,\r\n HermesAlertModule,\r\n HermesSpinnerModule,\r\n HermesTabsModule,\r\n HermesTreeViewModule,\r\n CommonModule,\r\n RouterModule,\r\n ],\r\n declarations: [\r\n CertificateViewerComponent,\r\n CertificateViewerDetailsComponent,\r\n CertificateViewerGeneralComponent,\r\n CertificateViewerTranslateFieldPipe,\r\n ],\r\n exports: [CertificateViewerComponent],\r\n})\r\nexport class AppfxCertificateViewerModule {\r\n constructor() {\r\n ClarityIcons.addIcons(angleIcon);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { AppfxCertificateViewerModule } from './certificate-viewer.module';\r\nexport {\r\n /**\r\n * @deprecated Use AppfxCertificateViewerModule import instead.\r\n */\r\n AppfxCertificateViewerModule as CertificateViewerModule,\r\n} from './certificate-viewer.module';\r\nexport { CertificateViewerComponent } from './certificate-viewer/certificate-viewer.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["PkijsCertificate","i1","i2","i3","i4.CertificateViewerTranslateFieldPipe","i4.CertificateViewerDetailsComponent","i5.CertificateViewerGeneralComponent","i6"],"mappings":";;;;;;;;;;;;;AAAA;;;;;AAKG;AAMI,MAAM,YAAY,GAAsB;AAC7C,IAAA,EAAE,EAAE;AACF,QAAA,OAAO,EAAE,SAAS;AAElB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,YAAY,EAAE,YAAY;AAC1B,QAAA,iBAAiB,EAAE,iBAAiB;AACpC,QAAA,YAAY,EAAE,cAAc;AAC5B,QAAA,qBAAqB,EAAE,qBAAqB;AAC5C,QAAA,mBAAmB,EAAE,mBAAmB;AACxC,QAAA,KAAK,EAAE,+BAA+B;AACtC,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,yBAAyB,EAAE,2BAA2B;AACtD,QAAA,uBAAuB,EAAE,uBAAuB;AAChD,QAAA,oBAAoB,EAAE,oBAAoB;AAC1C,QAAA,aAAa,EAAE,aAAa;AAC5B,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,gBAAgB,EAAE,qBAAqB;AACvC,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,YAAY,EAAE,YAAY;AAC1B,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,eAAe,EAAE,eAAe;AAChC,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,iCAAiC,EAAE,iCAAiC;AACpE,QAAA,6BAA6B,EAAE,6BAA6B;AAC5D,QAAA,yBAAyB,EAAE,yBAAyB;AACpD,QAAA,8BAA8B,EAAE,8BAA8B;AAC9D,QAAA,qBAAqB,EAAE,sBAAsB;AAC7C,QAAA,cAAc,EAAE,0BAA0B;AAC1C,QAAA,iBAAiB,EAAE,kBAAkB;AACrC,QAAA,aAAa,EAAE,wBAAwB;AACvC,QAAA,UAAU,EAAE,YAAY;AACxB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,cAAc,EAAE,cAAc;AAC9B,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,oBAAoB,EAAE,oBAAoB;AAC1C,QAAA,eAAe,EAAE,YAAY;AAC7B,QAAA,uBAAuB,EAAE,kCAAkC;AAC3D,QAAA,mBAAmB,EAAE,8BAA8B;AACnD,QAAA,6BAA6B,EAAE,mDAAmD;AAClF,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,QAAQ,EAAE,gBAAgB;AAE1B,QAAA,yBAAyB,EAAE,YAAY;AACvC,QAAA,0BAA0B,EAAE,aAAa;AACzC,QAAA,uBAAuB,EAAE,UAAU;AACnC,QAAA,2BAA2B,EAAE,cAAc;AAC3C,QAAA,6BAA6B,EAAE,gBAAgB;AAC/C,QAAA,6BAA6B,EAAE,gBAAgB;AAC/C,QAAA,kBAAkB,EAAE,KAAK;AACzB,QAAA,yBAAyB,EAAE,YAAY;AACvC,QAAA,4BAA4B,EAAE,eAAe;AAE7C,QAAA,4BAA4B,EAAE,SAAS;AACvC,QAAA,0BAA0B,EAAE,iBAAiB;AAC7C,QAAA,2BAA2B,EAAE,kBAAkB;AAC/C,QAAA,4BAA4B,EAAE,mBAAmB;AACjD,QAAA,wBAAwB,EAAE,eAAe;AACzC,QAAA,uBAAuB,EAAE,oBAAoB;AAC7C,QAAA,mBAAmB,EAAE,YAAY;AACjC,QAAA,wBAAwB,EAAE,eAAe;AACzC,QAAA,wBAAwB,EAAE,eAAe;AAEzC,QAAA,YAAY,EAAE,aAAa;AAC3B,QAAA,OAAO,EAAE,UAAU;;AAGnB,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,SAAS,EAAE,cAAc;AACzB,QAAA,SAAS,EAAE,8BAA8B;AACzC,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,SAAS,EAAE,mBAAmB;AAC9B,QAAA,SAAS,EAAE,6BAA6B;AACxC,QAAA,SAAS,EAAE,yBAAyB;AACpC,QAAA,UAAU,EAAE,uBAAuB;AACnC,QAAA,UAAU,EAAE,0BAA0B;AACtC,QAAA,UAAU,EAAE,WAAW;AACvB,QAAA,UAAU,EAAE,cAAc;AAC1B,QAAA,UAAU,EAAE,iBAAiB;AAC7B,QAAA,UAAU,EAAE,sBAAsB;AAClC,QAAA,UAAU,EAAE,6CAA6C;;AAGzD,QAAA,UAAU,EAAE,8BAA8B;AAC1C,QAAA,WAAW,EAAE,4BAA4B;AACzC,QAAA,WAAW,EAAE,uBAAuB;AACpC,QAAA,WAAW,EAAE,mBAAmB;AAChC,QAAA,WAAW,EAAE,sCAAsC;AACnD,QAAA,WAAW,EAAE,qCAAqC;AAClD,QAAA,WAAW,EAAE,+BAA+B;AAC5C,QAAA,WAAW,EAAE,YAAY;AACzB,QAAA,WAAW,EAAE,aAAa;AAC1B,QAAA,WAAW,EAAE,uBAAuB;AACpC,QAAA,WAAW,EAAE,iBAAiB;AAC9B,QAAA,WAAW,EAAE,qBAAqB;AAClC,QAAA,WAAW,EAAE,4BAA4B;AACzC,QAAA,WAAW,EAAE,oBAAoB;AACjC,QAAA,WAAW,EAAE,kBAAkB;AAC/B,QAAA,WAAW,EAAE,yBAAyB;AACtC,QAAA,WAAW,EAAE,sBAAsB;AACnC,QAAA,aAAa,EAAE,YAAY;AAC3B,QAAA,WAAW,EAAE,iBAAiB;AAC9B,QAAA,WAAW,EAAE,8BAA8B;AAC3C,QAAA,WAAW,EAAE,oBAAoB;AACjC,QAAA,WAAW,EAAE,oBAAoB;AACjC,QAAA,aAAa,EAAE,wBAAwB;AACvC,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,WAAW,EAAE,oBAAoB;;AAGjC,QAAA,mBAAmB,EAAE,8BAA8B;AACnD,QAAA,oBAAoB,EAAE,4BAA4B;AAClD,QAAA,mBAAmB,EAAE,wCAAwC;AAC7D,QAAA,mBAAmB,EAAE,+BAA+B;AACpD,QAAA,mBAAmB,EAAE,+BAA+B;AACpD,QAAA,mBAAmB,EAAE,yCAAyC;AAC9D,QAAA,mBAAmB,EAAE,kBAAkB;AACvC,QAAA,mBAAmB,EAAE,8BAA8B;AACnD,QAAA,mBAAmB,EAAE,0BAA0B;AAC/C,QAAA,mBAAmB,EAAE,wBAAwB;AAC7C,QAAA,mBAAmB,EAAE,gCAAgC;AACrD,QAAA,mBAAmB,EAAE,wBAAwB;AAC7C,QAAA,oBAAoB,EAAE,2CAA2C;AACjE,QAAA,sBAAsB,EAAE,qBAAqB;AAC7C,QAAA,sBAAsB,EAAE,sBAAsB;AAC9C,QAAA,sBAAsB,EAAE,6CAA6C;AACrE,QAAA,sBAAsB,EAAE,6CAA6C;AACrE,QAAA,sBAAsB,EAAE,yBAAyB;AACjD,QAAA,sBAAsB,EAAE,+BAA+B;AACvD,QAAA,sBAAsB,EAAE,gCAAgC;AACxD,QAAA,sBAAsB,EAAE,qDAAqD;AAC7E,QAAA,oBAAoB,EAAE,+BAA+B;AACrD,QAAA,oBAAoB,EAAE,eAAe;AACrC,QAAA,oBAAoB,EAAE,uCAAuC;;;AAI7D,QAAA,sBAAsB,EAAE,oCAAoC;AAC5D,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,YAAY;AACtC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,YAAY;AACvC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,YAAY;AACvC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;;AAGxC,QAAA,sBAAsB,EAAE,wBAAwB;AAChD,QAAA,wBAAwB,EAAE,SAAS;AACnC,QAAA,wBAAwB,EAAE,SAAS;AACnC,QAAA,wBAAwB,EAAE,SAAS;AACnC,QAAA,wBAAwB,EAAE,SAAS;AACnC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,UAAU;AACpC,QAAA,wBAAwB,EAAE,UAAU;AACpC,QAAA,wBAAwB,EAAE,UAAU;AACpC,QAAA,yBAAyB,EAAE,UAAU;AACrC,QAAA,yBAAyB,EAAE,WAAW;AACtC,QAAA,yBAAyB,EAAE,WAAW;AACtC,QAAA,yBAAyB,EAAE,eAAe;AAC1C,QAAA,yBAAyB,EAAE,eAAe;AAC1C,QAAA,yBAAyB,EAAE,eAAe;AAC1C,QAAA,yBAAyB,EAAE,eAAe;AAC1C,QAAA,yBAAyB,EAAE,yCAAyC;AACpE,QAAA,yBAAyB,EAAE,yCAAyC;;AAGpE,QAAA,sBAAsB,EAAE,sBAAsB;AAC9C,QAAA,wBAAwB,EAAE,kBAAkB;AAC5C,QAAA,wBAAwB,EAAE,kBAAkB;AAC5C,QAAA,wBAAwB,EAAE,kBAAkB;AAC5C,QAAA,wBAAwB,EAAE,kBAAkB;AAC5C,QAAA,wBAAwB,EAAE,mBAAmB;AAC7C,QAAA,wBAAwB,EAAE,mBAAmB;AAC7C,QAAA,wBAAwB,EAAE,mBAAmB;AAC7C,QAAA,wBAAwB,EAAE,mBAAmB;AAC7C,QAAA,wBAAwB,EAAE,wBAAwB;AAClD,QAAA,yBAAyB,EAAE,wBAAwB;AACnD,QAAA,yBAAyB,EAAE,wBAAwB;AACnD,QAAA,yBAAyB,EAAE,wBAAwB;AACnD,QAAA,yBAAyB,EAAE,mBAAmB;AAC9C,QAAA,yBAAyB,EAAE,mBAAmB;AAC9C,QAAA,yBAAyB,EAAE,mBAAmB;AAC9C,QAAA,yBAAyB,EAAE,mBAAmB;;;AAI9C,QAAA,oBAAoB,EAAE,6CAA6C;AACnE,QAAA,sBAAsB,EAAE,4CAA4C;AACpE,QAAA,sBAAsB,EAAE,iCAAiC;AACzD,QAAA,sBAAsB,EAAE,iCAAiC;AACzD,QAAA,sBAAsB,EAAE,kCAAkC;AAC1D,QAAA,sBAAsB,EAAE,iCAAiC;AACzD,QAAA,sBAAsB,EAAE,uBAAuB;AAC/C,QAAA,sBAAsB,EAAE,wBAAwB;AAChD,QAAA,uBAAuB,EAAE,oBAAoB;AAC7C,QAAA,uBAAuB,EAAE,qCAAqC;AAC9D,QAAA,uBAAuB,EAAE,qCAAqC;AAC9D,QAAA,uBAAuB,EAAE,qCAAqC;AAC9D,QAAA,uBAAuB,EAAE,qCAAqC;AAC9D,QAAA,uBAAuB,EAAE,yCAAyC;AAClE,QAAA,uBAAuB,EAAE,yCAAyC;;AAGlE,QAAA,oBAAoB,EAAE,oFAAoF;AAC1G,QAAA,sBAAsB,EAAE,2CAA2C;;AAGnE,QAAA,oBAAoB,EAAE,qDAAqD;AAC3E,QAAA,sBAAsB,EAAE,8BAA8B;AACtD,QAAA,sBAAsB,EAAE,8BAA8B;AACtD,QAAA,uBAAuB,EAAE,+BAA+B;AACxD,QAAA,uBAAuB,EAAE,+BAA+B;AACxD,QAAA,uBAAuB,EAAE,2DAA2D;AACpF,QAAA,uBAAuB,EAAE,oDAAoD;;AAG7E,QAAA,oBAAoB,EAAE,6CAA6C;AACnE,QAAA,sBAAsB,EAAE,cAAc;AACtC,QAAA,sBAAsB,EAAE,qBAAqB;AAC7C,QAAA,sBAAsB,EAAE,wBAAwB;AAChD,QAAA,sBAAsB,EAAE,mCAAmC;AAC3D,QAAA,sBAAsB,EAAE,uBAAuB;AAC/C,QAAA,sBAAsB,EAAE,wBAAwB;;AAGhD,QAAA,oBAAoB,EAAE,6CAA6C;AACnE,QAAA,sBAAsB,EAAE,uBAAuB;AAC/C,QAAA,sBAAsB,EAAE,2BAA2B;AACnD,QAAA,sBAAsB,EAAE,sBAAsB;AAC9C,QAAA,sBAAsB,EAAE,wBAAwB;AAChD,QAAA,sBAAsB,EAAE,sBAAsB;AAC9C,QAAA,sBAAsB,EAAE,2BAA2B;AACnD,QAAA,sBAAsB,EAAE,4BAA4B;AACpD,QAAA,sBAAsB,EAAE,8BAA8B;AACtD,QAAA,sBAAsB,EAAE,yCAAyC;AACjE,QAAA,uBAAuB,EAAE,kCAAkC;AAC3D,QAAA,uBAAuB,EAAE,2BAA2B;AACpD,QAAA,uBAAuB,EAAE,0BAA0B;AACnD,QAAA,2BAA2B,EAAE,+BAA+B;AAC5D,QAAA,4BAA4B,EAAE,6BAA6B;AAC3D,QAAA,4BAA4B,EAAE,mCAAmC;AACjE,QAAA,4BAA4B,EAC1B,+FAA+F;AACjG,QAAA,uBAAuB,EAAE,uBAAuB;AAChD,QAAA,uBAAuB,EAAE,sBAAsB;AAC/C,QAAA,yBAAyB,EAAE,wCAAwC;AACnE,QAAA,uBAAuB,EAAE,kCAAkC;;AAG3D,QAAA,qBAAqB,EAAE,8CAA8C;AACrE,QAAA,yBAAyB,EAAE,gCAAgC;AAC3D,QAAA,yBAAyB,EAAE,+BAA+B;AAC1D,QAAA,yBAAyB,EAAE,gCAAgC;AAC3D,QAAA,yBAAyB,EAAE,gCAAgC;AAC3D,QAAA,yBAAyB,EAAE,+BAA+B;AAC1D,QAAA,4BAA4B,EAAE,mCAAmC;AACjE,QAAA,4BAA4B,EAAE,0BAA0B;AACxD,QAAA,4BAA4B,EAAE,gDAAgD;AAC9E,QAAA,4BAA4B,EAAE,qBAAqB;AACnD,QAAA,4BAA4B,EAAE,4BAA4B;;AAG1D,QAAA,kBAAkB,EAAE,mBAAmB;AACvC,QAAA,oBAAoB,EAAE,yBAAyB;AAC/C,QAAA,oBAAoB,EAAE,yBAAyB;AAC/C,QAAA,oBAAoB,EAAE,YAAY;AAClC,QAAA,oBAAoB,EAAE,cAAc;AACpC,QAAA,oBAAoB,EAAE,cAAc;AACpC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,kBAAkB;AACzC,QAAA,qBAAqB,EAAE,kBAAkB;;AAGzC,QAAA,kBAAkB,EAAE,uBAAuB;AAC3C,QAAA,oBAAoB,EAAE,SAAS;AAC/B,QAAA,oBAAoB,EAAE,SAAS;AAC/B,QAAA,oBAAoB,EAAE,cAAc;AACpC,QAAA,oBAAoB,EAAE,SAAS;;;AAI/B,QAAA,mBAAmB,EAAE,wBAAwB;AAC7C,QAAA,mBAAmB,EAAE,gBAAgB;;AAGrC,QAAA,mBAAmB,EAAE,wCAAwC;AAE7D,QAAA,qBAAqB,EAAE,YAAY;AACnC,QAAA,qBAAqB,EAAE,YAAY;AACnC,QAAA,qBAAqB,EAAE,YAAY;AACnC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,qBAAqB,EAAE,uFAAuF;AAC9G,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,YAAY;AACnC,QAAA,mBAAmB,EAAE,gCAAgC;AACrD,QAAA,qBAAqB,EAAE,uCAAuC;AAC9D,QAAA,qBAAqB,EAAE,kBAAkB;AACzC,QAAA,qBAAqB,EAAE,kBAAkB;AACzC,QAAA,qBAAqB,EAAE,kBAAkB;AACzC,QAAA,mBAAmB,EAAE,+BAA+B;;AAGpD,QAAA,mBAAmB,EAAE,8DAA8D;;AAGnF,QAAA,sBAAsB,EAAE,uCAAuC;AAC/D,QAAA,sBAAsB,EAAE,uCAAuC;AAC/D,QAAA,sBAAsB,EAAE,uCAAuC;AAC/D,QAAA,sBAAsB,EAAE,uCAAuC;AAC/D,QAAA,sBAAsB,EAAE,uCAAuC;AAC/D,QAAA,uBAAuB,EAAE,uCAAuC;AAChE,QAAA,uBAAuB,EAAE,uCAAuC;;AAGhE,QAAA,aAAa,EAAE,uDAAuD;AACtE,QAAA,aAAa,EAAE,uDAAuD;AACtE,QAAA,aAAa,EAAE,uDAAuD;AACtE,QAAA,aAAa,EAAE,uDAAuD;AACtE,QAAA,aAAa,EAAE,uDAAuD;AACtE,QAAA,aAAa,EAAE,uDAAuD;AACtE,QAAA,aAAa,EAAE,uDAAuD;AACtE,QAAA,aAAa,EAAE,uDAAuD;AACtE,QAAA,aAAa,EAAE,uDAAuD;AACtE,QAAA,cAAc,EAAE,wDAAwD;AACxE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,8EAA8E;AAC9F,QAAA,cAAc,EAAE,8EAA8E;AAC9F,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,uDAAuD;AACvE,QAAA,cAAc,EAAE,gDAAgD;;AAGhE,QAAA,cAAc,EACZ,sGAAsG;AACxG,QAAA,eAAe,EAAE,mCAAmC;AACpD,QAAA,eAAe,EACb,mHAAmH;AACrH,QAAA,eAAe,EACb,sIAAsI;AACxI,QAAA,eAAe,EACb,gKAAgK;AAClK,QAAA,eAAe,EAAE,2CAA2C;AAC5D,QAAA,eAAe,EACb,8GAA8G;AAChH,QAAA,eAAe,EACb,oGAAoG;;AAGtG,QAAA,aAAa,EAAE,yEAAyE;AACxF,QAAA,aAAa,EAAE,qEAAqE;AACpF,QAAA,aAAa,EAAE,2DAA2D;AAC1E,QAAA,aAAa,EAAE,yDAAyD;;AAGxE,QAAA,2BAA2B,EAAE,eAAe;AAC5C,QAAA,4BAA4B,EAAE,uBAAuB;;AAGrD,QAAA,uBAAuB,EAAE,2BAA2B;AACpD,QAAA,uBAAuB,EAAE,sBAAsB;AAC/C,QAAA,uBAAuB,EAAE,oCAAoC;AAC9D,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,OAAO,EAAE,SAAS;AAElB,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,WAAW,EAAE,aAAa;AAC1B,QAAA,WAAW,EAAE,YAAY;AACzB,QAAA,YAAY,EAAE,WAAW;AACzB,QAAA,iBAAiB,EAAE,oBAAoB;AACvC,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,qBAAqB,EAAE,wBAAwB;AAC/C,QAAA,mBAAmB,EAAE,sBAAsB;AAC3C,QAAA,KAAK,EAAE,kCAAkC;AACzC,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,UAAU;AACnB,QAAA,yBAAyB,EAAE,2BAA2B;AACtD,QAAA,uBAAuB,EAAE,2BAA2B;AACpD,QAAA,oBAAoB,EAAE,wBAAwB;AAC9C,QAAA,aAAa,EAAE,gBAAgB;AAC/B,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,gBAAgB,EAAE,qBAAqB;AACvC,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,YAAY,EAAE,UAAU;AACxB,QAAA,WAAW,EAAE,YAAY;AACzB,QAAA,eAAe,EAAE,iBAAiB;AAClC,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,iCAAiC,EAAE,mCAAmC;AACtE,QAAA,6BAA6B,EAAE,+BAA+B;AAC9D,QAAA,yBAAyB,EAAE,yCAAyC;AACpE,QAAA,8BAA8B,EAAE,uCAAuC;AACvE,QAAA,qBAAqB,EAAE,0BAA0B;AACjD,QAAA,cAAc,EAAE,yBAAyB;AACzC,QAAA,iBAAiB,EAAE,oBAAoB;AACvC,QAAA,aAAa,EAAE,6BAA6B;AAC5C,QAAA,UAAU,EAAE,aAAa;AACzB,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,cAAc,EAAE,YAAY;AAC5B,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,oBAAoB,EAAE,yBAAyB;AAC/C,QAAA,eAAe,EAAE,iBAAiB;AAClC,QAAA,uBAAuB,EAAE,oCAAoC;AAC7D,QAAA,mBAAmB,EAAE,iCAAiC;AACtD,QAAA,6BAA6B,EAAE,gDAAgD;AAC/E,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,QAAQ,EAAE,gCAAgC;AAE1C,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,0BAA0B,EAAE,eAAe;AAC3C,QAAA,uBAAuB,EAAE,eAAe;AACxC,QAAA,2BAA2B,EAAE,gBAAgB;AAC7C,QAAA,6BAA6B,EAAE,uBAAuB;AACtD,QAAA,6BAA6B,EAAE,uBAAuB;AACtD,QAAA,kBAAkB,EAAE,KAAK;AACzB,QAAA,yBAAyB,EAAE,cAAc;AACzC,QAAA,4BAA4B,EAAE,eAAe;AAE7C,QAAA,4BAA4B,EAAE,OAAO;AACrC,QAAA,0BAA0B,EAAE,YAAY;AACxC,QAAA,2BAA2B,EAAE,mBAAmB;AAChD,QAAA,4BAA4B,EAAE,kBAAkB;AAChD,QAAA,wBAAwB,EAAE,kBAAkB;AAC5C,QAAA,uBAAuB,EAAE,yBAAyB;AAClD,QAAA,mBAAmB,EAAE,iBAAiB;AACtC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,gBAAgB;AAE1C,QAAA,YAAY,EAAE,gBAAgB;AAC9B,QAAA,OAAO,EAAE,UAAU;;AAGnB,QAAA,SAAS,EAAE,mBAAmB;AAC9B,QAAA,SAAS,EAAE,eAAe;AAC1B,QAAA,SAAS,EAAE,gCAAgC;AAC3C,QAAA,SAAS,EAAE,oBAAoB;AAC/B,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,SAAS,EAAE,mCAAmC;AAC9C,QAAA,SAAS,EAAE,2BAA2B;AACtC,QAAA,UAAU,EAAE,4BAA4B;AACxC,QAAA,UAAU,EAAE,0BAA0B;AACtC,QAAA,UAAU,EAAE,WAAW;AACvB,QAAA,UAAU,EAAE,eAAe;AAC3B,QAAA,UAAU,EAAE,oBAAoB;AAChC,QAAA,UAAU,EAAE,2BAA2B;AACvC,QAAA,UAAU,EAAE,sDAAsD;;AAGlE,QAAA,UAAU,EAAE,mCAAmC;AAC/C,QAAA,WAAW,EAAE,iDAAiD;AAC9D,QAAA,WAAW,EAAE,6BAA6B;AAC1C,QAAA,WAAW,EAAE,sBAAsB;AACnC,QAAA,WAAW,EAAE,+CAA+C;AAC5D,QAAA,WAAW,EAAE,+CAA+C;AAC5D,QAAA,WAAW,EAAE,uCAAuC;AACpD,QAAA,WAAW,EAAE,eAAe;AAC5B,QAAA,WAAW,EAAE,iBAAiB;AAC9B,QAAA,WAAW,EAAE,+BAA+B;AAC5C,QAAA,WAAW,EAAE,qBAAqB;AAClC,QAAA,WAAW,EAAE,2BAA2B;AACxC,QAAA,WAAW,EAAE,kCAAkC;AAC/C,QAAA,WAAW,EAAE,wBAAwB;AACrC,QAAA,WAAW,EAAE,yBAAyB;AACtC,QAAA,WAAW,EAAE,+BAA+B;AAC5C,QAAA,WAAW,EAAE,4BAA4B;AACzC,QAAA,aAAa,EAAE,qBAAqB;AACpC,QAAA,WAAW,EAAE,4BAA4B;AACzC,QAAA,WAAW,EAAE,oDAAoD;AACjE,QAAA,WAAW,EAAE,6BAA6B;AAC1C,QAAA,WAAW,EAAE,2BAA2B;AACxC,QAAA,aAAa,EAAE,qCAAqC;AACpD,QAAA,WAAW,EAAE,kBAAkB;AAC/B,QAAA,WAAW,EAAE,6BAA6B;;AAG1C,QAAA,mBAAmB,EAAE,iCAAiC;AACtD,QAAA,oBAAoB,EAAE,gCAAgC;AACtD,QAAA,mBAAmB,EAAE,mDAAmD;AACxE,QAAA,mBAAmB,EAAE,uCAAuC;AAC5D,QAAA,mBAAmB,EAAE,qCAAqC;AAC1D,QAAA,mBAAmB,EAAE,yCAAyC;AAC9D,QAAA,mBAAmB,EAAE,kCAAkC;AACvD,QAAA,mBAAmB,EAAE,wCAAwC;AAC7D,QAAA,mBAAmB,EAAE,+BAA+B;AACpD,QAAA,mBAAmB,EAAE,iCAAiC;AACtD,QAAA,mBAAmB,EAAE,8CAA8C;AACnE,QAAA,mBAAmB,EAAE,6BAA6B;AAClD,QAAA,oBAAoB,EAAE,qDAAqD;AAC3E,QAAA,sBAAsB,EAAE,0BAA0B;AAClD,QAAA,sBAAsB,EAAE,4BAA4B;AACpD,QAAA,sBAAsB,EAAE,yDAAyD;AACjF,QAAA,sBAAsB,EAAE,mDAAmD;AAC3E,QAAA,sBAAsB,EAAE,oCAAoC;AAC5D,QAAA,sBAAsB,EAAE,wCAAwC;AAChE,QAAA,sBAAsB,EAAE,6CAA6C;AACrE,QAAA,sBAAsB,EAAE,0DAA0D;AAClF,QAAA,oBAAoB,EAAE,sCAAsC;AAC5D,QAAA,oBAAoB,EAAE,iBAAiB;AACvC,QAAA,oBAAoB,EAAE,8CAA8C;;;AAIpE,QAAA,sBAAsB,EAAE,oCAAoC;AAC5D,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,YAAY;AACtC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,YAAY;AACvC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,YAAY;AACvC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;;AAGxC,QAAA,sBAAsB,EAAE,yBAAyB;AACjD,QAAA,wBAAwB,EAAE,SAAS;AACnC,QAAA,wBAAwB,EAAE,SAAS;AACnC,QAAA,wBAAwB,EAAE,SAAS;AACnC,QAAA,wBAAwB,EAAE,SAAS;AACnC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,UAAU;AACpC,QAAA,wBAAwB,EAAE,UAAU;AACpC,QAAA,wBAAwB,EAAE,UAAU;AACpC,QAAA,yBAAyB,EAAE,UAAU;AACrC,QAAA,yBAAyB,EAAE,WAAW;AACtC,QAAA,yBAAyB,EAAE,WAAW;AACtC,QAAA,yBAAyB,EAAE,eAAe;AAC1C,QAAA,yBAAyB,EAAE,eAAe;AAC1C,QAAA,yBAAyB,EAAE,eAAe;AAC1C,QAAA,yBAAyB,EAAE,eAAe;AAC1C,QAAA,yBAAyB,EAAE,2CAA2C;AACtE,QAAA,yBAAyB,EAAE,2CAA2C;;AAGtE,QAAA,sBAAsB,EAAE,qBAAqB;AAC7C,QAAA,wBAAwB,EAAE,iBAAiB;AAC3C,QAAA,wBAAwB,EAAE,iBAAiB;AAC3C,QAAA,wBAAwB,EAAE,iBAAiB;AAC3C,QAAA,wBAAwB,EAAE,iBAAiB;AAC3C,QAAA,wBAAwB,EAAE,kBAAkB;AAC5C,QAAA,wBAAwB,EAAE,kBAAkB;AAC5C,QAAA,wBAAwB,EAAE,kBAAkB;AAC5C,QAAA,wBAAwB,EAAE,kBAAkB;AAC5C,QAAA,wBAAwB,EAAE,uBAAuB;AACjD,QAAA,yBAAyB,EAAE,uBAAuB;AAClD,QAAA,yBAAyB,EAAE,uBAAuB;AAClD,QAAA,yBAAyB,EAAE,uBAAuB;AAClD,QAAA,yBAAyB,EAAE,kBAAkB;AAC7C,QAAA,yBAAyB,EAAE,kBAAkB;AAC7C,QAAA,yBAAyB,EAAE,kBAAkB;AAC7C,QAAA,yBAAyB,EAAE,kBAAkB;;;AAI7C,QAAA,oBAAoB,EAAE,uDAAuD;AAC7E,QAAA,sBAAsB,EAAE,gDAAgD;AACxE,QAAA,sBAAsB,EAAE,gCAAgC;AACxD,QAAA,sBAAsB,EAAE,gCAAgC;AACxD,QAAA,sBAAsB,EAAE,iCAAiC;AACzD,QAAA,sBAAsB,EAAE,4CAA4C;AACpE,QAAA,sBAAsB,EAAE,yBAAyB;AACjD,QAAA,sBAAsB,EAAE,2BAA2B;AACnD,QAAA,uBAAuB,EAAE,uBAAuB;AAChD,QAAA,uBAAuB,EAAE,oCAAoC;AAC7D,QAAA,uBAAuB,EAAE,oCAAoC;AAC7D,QAAA,uBAAuB,EAAE,oCAAoC;AAC7D,QAAA,uBAAuB,EAAE,oCAAoC;AAC7D,QAAA,uBAAuB,EAAE,wCAAwC;AACjE,QAAA,uBAAuB,EAAE,wCAAwC;;AAGjE,QAAA,oBAAoB,EAClB,8FAA8F;AAChG,QAAA,sBAAsB,EAAE,oDAAoD;;AAG5E,QAAA,oBAAoB,EAAE,kEAAkE;AACxF,QAAA,sBAAsB,EAAE,8BAA8B;AACtD,QAAA,sBAAsB,EAAE,8BAA8B;AACtD,QAAA,uBAAuB,EAAE,+BAA+B;AACxD,QAAA,uBAAuB,EAAE,+BAA+B;AACxD,QAAA,uBAAuB,EAAE,2EAA2E;AACpG,QAAA,uBAAuB,EAAE,8DAA8D;;AAGvF,QAAA,oBAAoB,EAAE,uDAAuD;AAC7E,QAAA,sBAAsB,EAAE,kBAAkB;AAC1C,QAAA,sBAAsB,EAAE,2BAA2B;AACnD,QAAA,sBAAsB,EAAE,+BAA+B;AACvD,QAAA,sBAAsB,EAAE,0CAA0C;AAClE,QAAA,sBAAsB,EAAE,4BAA4B;AACpD,QAAA,sBAAsB,EAAE,2BAA2B;;AAGnD,QAAA,oBAAoB,EAAE,uDAAuD;AAC7E,QAAA,sBAAsB,EAAE,4CAA4C;AACpE,QAAA,sBAAsB,EAAE,mCAAmC;AAC3D,QAAA,sBAAsB,EAAE,8BAA8B;AACtD,QAAA,sBAAsB,EAAE,+BAA+B;AACvD,QAAA,sBAAsB,EAAE,0BAA0B;AAClD,QAAA,sBAAsB,EAAE,wBAAwB;AAChD,QAAA,sBAAsB,EAAE,kCAAkC;AAC1D,QAAA,sBAAsB,EAAE,sCAAsC;AAC9D,QAAA,sBAAsB,EAAE,gDAAgD;AACxE,QAAA,uBAAuB,EAAE,qCAAqC;AAC9D,QAAA,uBAAuB,EAAE,mCAAmC;AAC5D,QAAA,uBAAuB,EAAE,+BAA+B;AACxD,QAAA,2BAA2B,EAAE,qDAAqD;AAClF,QAAA,4BAA4B,EAAE,iCAAiC;AAC/D,QAAA,4BAA4B,EAAE,8CAA8C;AAC5E,QAAA,4BAA4B,EAC1B,+FAA+F;AACjG,QAAA,uBAAuB,EAAE,+BAA+B;AACxD,QAAA,uBAAuB,EAAE,yCAAyC;AAClE,QAAA,yBAAyB,EAAE,6CAA6C;AACxE,QAAA,uBAAuB,EAAE,2CAA2C;;AAGpE,QAAA,qBAAqB,EAAE,wDAAwD;AAC/E,QAAA,yBAAyB,EAAE,kCAAkC;AAC7D,QAAA,yBAAyB,EAAE,iCAAiC;AAC5D,QAAA,yBAAyB,EAAE,kCAAkC;AAC7D,QAAA,yBAAyB,EAAE,kCAAkC;AAC7D,QAAA,yBAAyB,EAAE,iCAAiC;AAC5D,QAAA,4BAA4B,EAAE,oDAAoD;AAClF,QAAA,4BAA4B,EAAE,uCAAuC;AACrE,QAAA,4BAA4B,EAAE,qEAAqE;AACnG,QAAA,4BAA4B,EAAE,gCAAgC;AAC9D,QAAA,4BAA4B,EAAE,4CAA4C;;AAG1E,QAAA,kBAAkB,EAAE,uBAAuB;AAC3C,QAAA,oBAAoB,EAAE,8BAA8B;AACpD,QAAA,oBAAoB,EAAE,8BAA8B;AACpD,QAAA,oBAAoB,EAAE,YAAY;AAClC,QAAA,oBAAoB,EAAE,cAAc;AACpC,QAAA,oBAAoB,EAAE,cAAc;AACpC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,kBAAkB;AACzC,QAAA,qBAAqB,EAAE,kBAAkB;;AAGzC,QAAA,kBAAkB,EAAE,uBAAuB;AAC3C,QAAA,oBAAoB,EAAE,SAAS;AAC/B,QAAA,oBAAoB,EAAE,SAAS;AAC/B,QAAA,oBAAoB,EAAE,cAAc;AACpC,QAAA,oBAAoB,EAAE,SAAS;;;AAI/B,QAAA,mBAAmB,EAAE,iCAAiC;AACtD,QAAA,mBAAmB,EAAE,eAAe;;AAGpC,QAAA,mBAAmB,EAAE,+CAA+C;AAEpE,QAAA,qBAAqB,EAAE,YAAY;AACnC,QAAA,qBAAqB,EAAE,YAAY;AACnC,QAAA,qBAAqB,EAAE,YAAY;AACnC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,qBAAqB,EACnB,0GAA0G;AAC5G,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,YAAY;AACnC,QAAA,mBAAmB,EAAE,+BAA+B;AACpD,QAAA,qBAAqB,EAAE,uCAAuC;AAC9D,QAAA,qBAAqB,EAAE,iBAAiB;AACxC,QAAA,qBAAqB,EAAE,iBAAiB;AACxC,QAAA,qBAAqB,EAAE,iBAAiB;AACxC,QAAA,mBAAmB,EAAE,8BAA8B;;AAGnD,QAAA,mBAAmB,EAAE,qEAAqE;;AAG1F,QAAA,sBAAsB,EAAE,uDAAuD;AAC/E,QAAA,sBAAsB,EAAE,uDAAuD;AAC/E,QAAA,sBAAsB,EAAE,uDAAuD;AAC/E,QAAA,sBAAsB,EAAE,uDAAuD;AAC/E,QAAA,sBAAsB,EAAE,uDAAuD;AAC/E,QAAA,uBAAuB,EAAE,uDAAuD;AAChF,QAAA,uBAAuB,EAAE,uDAAuD;;AAGhF,QAAA,aAAa,EAAE,+DAA+D;AAC9E,QAAA,aAAa,EAAE,+DAA+D;AAC9E,QAAA,aAAa,EAAE,+DAA+D;AAC9E,QAAA,aAAa,EAAE,+DAA+D;AAC9E,QAAA,aAAa,EAAE,+DAA+D;AAC9E,QAAA,aAAa,EAAE,+DAA+D;AAC9E,QAAA,aAAa,EAAE,+DAA+D;AAC9E,QAAA,aAAa,EAAE,+DAA+D;AAC9E,QAAA,aAAa,EAAE,+DAA+D;AAC9E,QAAA,cAAc,EAAE,gEAAgE;AAChF,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,sFAAsF;AACtG,QAAA,cAAc,EAAE,sFAAsF;AACtG,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,+DAA+D;AAC/E,QAAA,cAAc,EAAE,mDAAmD;;AAGnE,QAAA,cAAc,EACZ,0HAA0H;AAC5H,QAAA,eAAe,EAAE,kCAAkC;AACnD,QAAA,eAAe,EACb,kIAAkI;AACpI,QAAA,eAAe,EACb,gJAAgJ;AAClJ,QAAA,eAAe,EACb,qKAAqK;AACvK,QAAA,eAAe,EAAE,2CAA2C;AAC5D,QAAA,eAAe,EACb,qHAAqH;AACvH,QAAA,eAAe,EACb,yGAAyG;;AAG3G,QAAA,aAAa,EAAE,2EAA2E;AAC1F,QAAA,aAAa,EAAE,uEAAuE;AACtF,QAAA,aAAa,EAAE,6DAA6D;AAC5E,QAAA,aAAa,EAAE,2DAA2D;;AAG1E,QAAA,2BAA2B,EAAE,gCAAgC;AAC7D,QAAA,4BAA4B,EAAE,4BAA4B;;AAG1D,QAAA,uBAAuB,EAAE,iCAAiC;AAC1D,QAAA,uBAAuB,EAAE,0BAA0B;AACnD,QAAA,uBAAuB,EAAE,+DAA+D;AACzF,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,OAAO,EAAE,SAAS;AAElB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,YAAY,EAAE,WAAW;AACzB,QAAA,iBAAiB,EAAE,oBAAoB;AACvC,QAAA,YAAY,EAAE,sBAAsB;AACpC,QAAA,qBAAqB,EAAE,4BAA4B;AACnD,QAAA,mBAAmB,EAAE,0BAA0B;AAC/C,QAAA,KAAK,EAAE,uCAAuC;AAC9C,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,yBAAyB,EAAE,2BAA2B;AACtD,QAAA,uBAAuB,EAAE,4BAA4B;AACrD,QAAA,oBAAoB,EAAE,sBAAsB;AAC5C,QAAA,aAAa,EAAE,iBAAiB;AAChC,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,gBAAgB,EAAE,qBAAqB;AACvC,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,YAAY,EAAE,WAAW;AACzB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,eAAe,EAAE,iBAAiB;AAClC,QAAA,MAAM,EAAE,UAAU;AAClB,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,iCAAiC,EAAE,uCAAuC;AAC1E,QAAA,6BAA6B,EAAE,mCAAmC;AAClE,QAAA,yBAAyB,EAAE,qCAAqC;AAChE,QAAA,8BAA8B,EAAE,0CAA0C;AAC1E,QAAA,qBAAqB,EAAE,yBAAyB;AAChD,QAAA,cAAc,EAAE,0BAA0B;AAC1C,QAAA,iBAAiB,EAAE,mBAAmB;AACtC,QAAA,aAAa,EAAE,2BAA2B;AAC1C,QAAA,UAAU,EAAE,YAAY;AACxB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,cAAc,EAAE,cAAc;AAC9B,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,oBAAoB,EAAE,0BAA0B;AAChD,QAAA,eAAe,EAAE,sBAAsB;AACvC,QAAA,uBAAuB,EAAE,yCAAyC;AAClE,QAAA,mBAAmB,EAAE,mCAAmC;AACxD,QAAA,6BAA6B,EAAE,qDAAqD;AACpF,QAAA,SAAS,EAAE,UAAU;AACrB,QAAA,QAAQ,EAAE,oBAAoB;AAE9B,QAAA,yBAAyB,EAAE,WAAW;AACtC,QAAA,0BAA0B,EAAE,eAAe;AAC3C,QAAA,uBAAuB,EAAE,SAAS;AAClC,QAAA,2BAA2B,EAAE,cAAc;AAC3C,QAAA,6BAA6B,EAAE,mBAAmB;AAClD,QAAA,6BAA6B,EAAE,mBAAmB;AAClD,QAAA,kBAAkB,EAAE,KAAK;AACzB,QAAA,yBAAyB,EAAE,YAAY;AACvC,QAAA,4BAA4B,EAAE,eAAe;AAE7C,QAAA,4BAA4B,EAAE,WAAW;AACzC,QAAA,0BAA0B,EAAE,iBAAiB;AAC7C,QAAA,2BAA2B,EAAE,oBAAoB;AACjD,QAAA,4BAA4B,EAAE,yBAAyB;AACvD,QAAA,wBAAwB,EAAE,eAAe;AACzC,QAAA,uBAAuB,EAAE,0BAA0B;AACnD,QAAA,mBAAmB,EAAE,sBAAsB;AAC3C,QAAA,wBAAwB,EAAE,wBAAwB;AAClD,QAAA,wBAAwB,EAAE,0BAA0B;AAEpD,QAAA,YAAY,EAAE,sBAAsB;AACpC,QAAA,OAAO,EAAE,UAAU;;AAGnB,QAAA,SAAS,EAAE,iBAAiB;AAC5B,QAAA,SAAS,EAAE,UAAU;AACrB,QAAA,SAAS,EAAE,gCAAgC;AAC3C,QAAA,SAAS,EAAE,iBAAiB;AAC5B,QAAA,SAAS,EAAE,wBAAwB;AACnC,QAAA,SAAS,EAAE,sCAAsC;AACjD,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,UAAU,EAAE,2BAA2B;AACvC,QAAA,UAAU,EAAE,2BAA2B;AACvC,QAAA,UAAU,EAAE,WAAW;AACvB,QAAA,UAAU,EAAE,eAAe;AAC3B,QAAA,UAAU,EAAE,gBAAgB;AAC5B,QAAA,UAAU,EAAE,6BAA6B;AACzC,QAAA,UAAU,EAAE,mDAAmD;;AAG/D,QAAA,UAAU,EAAE,kCAAkC;AAC9C,QAAA,WAAW,EAAE,qCAAqC;AAClD,QAAA,WAAW,EAAE,qCAAqC;AAClD,QAAA,WAAW,EAAE,8BAA8B;AAC3C,QAAA,WAAW,EAAE,kCAAkC;AAC/C,QAAA,WAAW,EAAE,yCAAyC;AACtD,QAAA,WAAW,EAAE,mCAAmC;AAChD,QAAA,WAAW,EAAE,eAAe;AAC5B,QAAA,WAAW,EAAE,gCAAgC;AAC7C,QAAA,WAAW,EAAE,+BAA+B;AAC5C,QAAA,WAAW,EAAE,mBAAmB;AAChC,QAAA,WAAW,EAAE,yBAAyB;AACtC,QAAA,WAAW,EAAE,mCAAmC;AAChD,QAAA,WAAW,EAAE,wBAAwB;AACrC,QAAA,WAAW,EAAE,oBAAoB;AACjC,QAAA,WAAW,EAAE,4BAA4B;AACzC,QAAA,WAAW,EAAE,0BAA0B;AACvC,QAAA,aAAa,EAAE,4BAA4B;AAC3C,QAAA,WAAW,EAAE,wBAAwB;AACrC,QAAA,WAAW,EAAE,0CAA0C;AACvD,QAAA,WAAW,EAAE,0BAA0B;AACvC,QAAA,WAAW,EAAE,iCAAiC;AAC9C,QAAA,aAAa,EAAE,+BAA+B;AAC9C,QAAA,WAAW,EAAE,qBAAqB;AAClC,QAAA,WAAW,EAAE,2BAA2B;;AAGxC,QAAA,mBAAmB,EAAE,sCAAsC;AAC3D,QAAA,oBAAoB,EAAE,qCAAqC;AAC3D,QAAA,mBAAmB,EAAE,2CAA2C;AAChE,QAAA,mBAAmB,EAAE,qCAAqC;AAC1D,QAAA,mBAAmB,EAAE,iCAAiC;AACtD,QAAA,mBAAmB,EAAE,6CAA6C;AAClE,QAAA,mBAAmB,EAAE,wBAAwB;AAC7C,QAAA,mBAAmB,EAAE,oCAAoC;AACzD,QAAA,mBAAmB,EAAE,4BAA4B;AACjD,QAAA,mBAAmB,EAAE,gCAAgC;AACrD,QAAA,mBAAmB,EAAE,sCAAsC;AAC3D,QAAA,mBAAmB,EAAE,6BAA6B;AAClD,QAAA,oBAAoB,EAAE,2CAA2C;AACjE,QAAA,sBAAsB,EAAE,sBAAsB;AAC9C,QAAA,sBAAsB,EAAE,yBAAyB;AACjD,QAAA,sBAAsB,EAAE,2DAA2D;AACnF,QAAA,sBAAsB,EAAE,6CAA6C;AACrE,QAAA,sBAAsB,EAAE,kCAAkC;AAC1D,QAAA,sBAAsB,EAAE,mCAAmC;AAC3D,QAAA,sBAAsB,EAAE,2CAA2C;AACnE,QAAA,sBAAsB,EAAE,4DAA4D;AACpF,QAAA,oBAAoB,EAAE,0CAA0C;AAChE,QAAA,oBAAoB,EAAE,YAAY;AAClC,QAAA,oBAAoB,EAAE,8CAA8C;;;AAIpE,QAAA,sBAAsB,EAAE,oCAAoC;AAC5D,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,YAAY;AACtC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,YAAY;AACvC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,YAAY;AACvC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;;AAGxC,QAAA,sBAAsB,EAAE,kCAAkC;AAC1D,QAAA,wBAAwB,EAAE,SAAS;AACnC,QAAA,wBAAwB,EAAE,SAAS;AACnC,QAAA,wBAAwB,EAAE,SAAS;AACnC,QAAA,wBAAwB,EAAE,SAAS;AACnC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,UAAU;AACpC,QAAA,wBAAwB,EAAE,UAAU;AACpC,QAAA,wBAAwB,EAAE,UAAU;AACpC,QAAA,yBAAyB,EAAE,UAAU;AACrC,QAAA,yBAAyB,EAAE,WAAW;AACtC,QAAA,yBAAyB,EAAE,WAAW;AACtC,QAAA,yBAAyB,EAAE,eAAe;AAC1C,QAAA,yBAAyB,EAAE,eAAe;AAC1C,QAAA,yBAAyB,EAAE,eAAe;AAC1C,QAAA,yBAAyB,EAAE,eAAe;AAC1C,QAAA,yBAAyB,EAAE,4CAA4C;AACvE,QAAA,yBAAyB,EAAE,4CAA4C;;AAGvE,QAAA,sBAAsB,EAAE,0BAA0B;AAClD,QAAA,wBAAwB,EAAE,kBAAkB;AAC5C,QAAA,wBAAwB,EAAE,kBAAkB;AAC5C,QAAA,wBAAwB,EAAE,kBAAkB;AAC5C,QAAA,wBAAwB,EAAE,kBAAkB;AAC5C,QAAA,wBAAwB,EAAE,mBAAmB;AAC7C,QAAA,wBAAwB,EAAE,mBAAmB;AAC7C,QAAA,wBAAwB,EAAE,mBAAmB;AAC7C,QAAA,wBAAwB,EAAE,mBAAmB;AAC7C,QAAA,wBAAwB,EAAE,wBAAwB;AAClD,QAAA,yBAAyB,EAAE,wBAAwB;AACnD,QAAA,yBAAyB,EAAE,wBAAwB;AACnD,QAAA,yBAAyB,EAAE,wBAAwB;AACnD,QAAA,yBAAyB,EAAE,mBAAmB;AAC9C,QAAA,yBAAyB,EAAE,mBAAmB;AAC9C,QAAA,yBAAyB,EAAE,mBAAmB;AAC9C,QAAA,yBAAyB,EAAE,mBAAmB;;;AAI9C,QAAA,oBAAoB,EAAE,6CAA6C;AACnE,QAAA,sBAAsB,EAAE,kDAAkD;AAC1E,QAAA,sBAAsB,EAAE,oCAAoC;AAC5D,QAAA,sBAAsB,EAAE,oCAAoC;AAC5D,QAAA,sBAAsB,EAAE,qCAAqC;AAC7D,QAAA,sBAAsB,EAAE,4CAA4C;AACpE,QAAA,sBAAsB,EAAE,uBAAuB;AAC/C,QAAA,sBAAsB,EAAE,0BAA0B;AAClD,QAAA,uBAAuB,EAAE,oBAAoB;AAC7C,QAAA,uBAAuB,EAAE,wCAAwC;AACjE,QAAA,uBAAuB,EAAE,wCAAwC;AACjE,QAAA,uBAAuB,EAAE,wCAAwC;AACjE,QAAA,uBAAuB,EAAE,wCAAwC;AACjE,QAAA,uBAAuB,EAAE,4CAA4C;AACrE,QAAA,uBAAuB,EAAE,4CAA4C;;AAGrE,QAAA,oBAAoB,EAAE,mFAAmF;AACzG,QAAA,sBAAsB,EAAE,6CAA6C;;AAGrE,QAAA,oBAAoB,EAAE,uDAAuD;AAC7E,QAAA,sBAAsB,EAAE,6BAA6B;AACrD,QAAA,sBAAsB,EAAE,6BAA6B;AACrD,QAAA,uBAAuB,EAAE,8BAA8B;AACvD,QAAA,uBAAuB,EAAE,8BAA8B;AACvD,QAAA,uBAAuB,EAAE,6DAA6D;AACtF,QAAA,uBAAuB,EAAE,sDAAsD;;AAG/E,QAAA,oBAAoB,EAAE,6CAA6C;AACnE,QAAA,sBAAsB,EAAE,iBAAiB;AACzC,QAAA,sBAAsB,EAAE,yBAAyB;AACjD,QAAA,sBAAsB,EAAE,gCAAgC;AACxD,QAAA,sBAAsB,EAAE,uCAAuC;AAC/D,QAAA,sBAAsB,EAAE,+BAA+B;AACvD,QAAA,sBAAsB,EAAE,8BAA8B;;AAGtD,QAAA,oBAAoB,EAAE,6CAA6C;AACnE,QAAA,sBAAsB,EAAE,wBAAwB;AAChD,QAAA,sBAAsB,EAAE,8BAA8B;AACtD,QAAA,sBAAsB,EAAE,yBAAyB;AACjD,QAAA,sBAAsB,EAAE,6BAA6B;AACrD,QAAA,sBAAsB,EAAE,4BAA4B;AACpD,QAAA,sBAAsB,EAAE,+BAA+B;AACvD,QAAA,sBAAsB,EAAE,gCAAgC;AACxD,QAAA,sBAAsB,EAAE,mCAAmC;AAC3D,QAAA,sBAAsB,EAAE,yCAAyC;AACjE,QAAA,uBAAuB,EAAE,uCAAuC;AAChE,QAAA,uBAAuB,EAAE,+BAA+B;AACxD,QAAA,uBAAuB,EAAE,0BAA0B;AACnD,QAAA,2BAA2B,EAAE,kDAAkD;AAC/E,QAAA,4BAA4B,EAAE,iCAAiC;AAC/D,QAAA,4BAA4B,EAAE,yCAAyC;AACvE,QAAA,4BAA4B,EAC1B,oGAAoG;AACtG,QAAA,uBAAuB,EAAE,yBAAyB;AAClD,QAAA,uBAAuB,EAAE,4BAA4B;AACrD,QAAA,yBAAyB,EAAE,yCAAyC;AACpE,QAAA,uBAAuB,EAAE,wCAAwC;;AAGjE,QAAA,qBAAqB,EAAE,8CAA8C;AACrE,QAAA,yBAAyB,EAAE,gCAAgC;AAC3D,QAAA,yBAAyB,EAAE,+BAA+B;AAC1D,QAAA,yBAAyB,EAAE,gCAAgC;AAC3D,QAAA,yBAAyB,EAAE,gCAAgC;AAC3D,QAAA,yBAAyB,EAAE,+BAA+B;AAC1D,QAAA,4BAA4B,EAAE,kDAAkD;AAChF,QAAA,4BAA4B,EAAE,4BAA4B;AAC1D,QAAA,4BAA4B,EAAE,mEAAmE;AACjG,QAAA,4BAA4B,EAAE,gCAAgC;AAC9D,QAAA,4BAA4B,EAAE,0CAA0C;;AAGxE,QAAA,kBAAkB,EAAE,oBAAoB;AACxC,QAAA,oBAAoB,EAAE,yBAAyB;AAC/C,QAAA,oBAAoB,EAAE,yBAAyB;AAC/C,QAAA,oBAAoB,EAAE,YAAY;AAClC,QAAA,oBAAoB,EAAE,cAAc;AACpC,QAAA,oBAAoB,EAAE,cAAc;AACpC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,kBAAkB;AACzC,QAAA,qBAAqB,EAAE,kBAAkB;;AAGzC,QAAA,kBAAkB,EAAE,4BAA4B;AAChD,QAAA,oBAAoB,EAAE,SAAS;AAC/B,QAAA,oBAAoB,EAAE,SAAS;AAC/B,QAAA,oBAAoB,EAAE,cAAc;AACpC,QAAA,oBAAoB,EAAE,SAAS;;;AAI/B,QAAA,mBAAmB,EAAE,6BAA6B;AAClD,QAAA,mBAAmB,EAAE,gBAAgB;;AAGrC,QAAA,mBAAmB,EAAE,kDAAkD;AAEvE,QAAA,qBAAqB,EAAE,YAAY;AACnC,QAAA,qBAAqB,EAAE,YAAY;AACnC,QAAA,qBAAqB,EAAE,YAAY;AACnC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,qBAAqB,EACnB,iIAAiI;AACnI,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,YAAY;AACnC,QAAA,mBAAmB,EAAE,gCAAgC;AACrD,QAAA,qBAAqB,EAAE,2CAA2C;AAClE,QAAA,qBAAqB,EAAE,kBAAkB;AACzC,QAAA,qBAAqB,EAAE,kBAAkB;AACzC,QAAA,qBAAqB,EAAE,kBAAkB;AACzC,QAAA,mBAAmB,EAAE,+BAA+B;;AAGpD,QAAA,mBAAmB,EAAE,uEAAuE;;AAG5F,QAAA,sBAAsB,EAAE,oDAAoD;AAC5E,QAAA,sBAAsB,EAAE,oDAAoD;AAC5E,QAAA,sBAAsB,EAAE,oDAAoD;AAC5E,QAAA,sBAAsB,EAAE,oDAAoD;AAC5E,QAAA,sBAAsB,EAAE,oDAAoD;AAC5E,QAAA,uBAAuB,EAAE,oDAAoD;AAC7E,QAAA,uBAAuB,EAAE,oDAAoD;;AAG7E,QAAA,aAAa,EAAE,qEAAqE;AACpF,QAAA,aAAa,EAAE,qEAAqE;AACpF,QAAA,aAAa,EAAE,qEAAqE;AACpF,QAAA,aAAa,EAAE,qEAAqE;AACpF,QAAA,aAAa,EAAE,qEAAqE;AACpF,QAAA,aAAa,EAAE,qEAAqE;AACpF,QAAA,aAAa,EAAE,qEAAqE;AACpF,QAAA,aAAa,EAAE,qEAAqE;AACpF,QAAA,aAAa,EAAE,qEAAqE;AACpF,QAAA,cAAc,EAAE,sEAAsE;AACtF,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,oEAAoE;AACpF,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,qFAAqF;AACrG,QAAA,cAAc,EAAE,qFAAqF;AACrG,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,qEAAqE;AACrF,QAAA,cAAc,EAAE,iDAAiD;;AAGjE,QAAA,cAAc,EACZ,sHAAsH;AACxH,QAAA,eAAe,EAAE,yCAAyC;AAC1D,QAAA,eAAe,EACb,kJAAkJ;AACpJ,QAAA,eAAe,EACb,2JAA2J;AAC7J,QAAA,eAAe,EACb,uKAAuK;AACzK,QAAA,eAAe,EAAE,2CAA2C;AAC5D,QAAA,eAAe,EACb,wIAAwI;AAC1I,QAAA,eAAe,EACb,6GAA6G;;AAG/G,QAAA,aAAa,EAAE,2EAA2E;AAC1F,QAAA,aAAa,EAAE,uEAAuE;AACtF,QAAA,aAAa,EAAE,2DAA2D;AAC1E,QAAA,aAAa,EAAE,yDAAyD;;AAGxE,QAAA,2BAA2B,EAAE,wBAAwB;AACrD,QAAA,4BAA4B,EAAE,2BAA2B;;AAGzD,QAAA,uBAAuB,EAAE,gCAAgC;AACzD,QAAA,uBAAuB,EAAE,yBAAyB;AAClD,QAAA,uBAAuB,EAAE,oCAAoC;AAC9D,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,OAAO,EAAE,SAAS;AAElB,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,iBAAiB,EAAE,MAAM;AACzB,QAAA,YAAY,EAAE,WAAW;AACzB,QAAA,qBAAqB,EAAE,mBAAmB;AAC1C,QAAA,mBAAmB,EAAE,iBAAiB;AACtC,QAAA,KAAK,EAAE,oBAAoB;AAC3B,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,yBAAyB,EAAE,2BAA2B;AACtD,QAAA,uBAAuB,EAAE,QAAQ;AACjC,QAAA,oBAAoB,EAAE,UAAU;AAChC,QAAA,aAAa,EAAE,QAAQ;AACvB,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,gBAAgB,EAAE,mBAAmB;AACrC,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,WAAW,EAAE,MAAM;AACnB,QAAA,eAAe,EAAE,QAAQ;AACzB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,iCAAiC,EAAE,aAAa;AAChD,QAAA,6BAA6B,EAAE,QAAQ;AACvC,QAAA,yBAAyB,EAAE,oBAAoB;AAC/C,QAAA,8BAA8B,EAAE,wBAAwB;AACxD,QAAA,qBAAqB,EAAE,iBAAiB;AACxC,QAAA,cAAc,EAAE,uBAAuB;AACvC,QAAA,iBAAiB,EAAE,OAAO;AAC1B,QAAA,aAAa,EAAE,mBAAmB;AAClC,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,cAAc,EAAE,QAAQ;AACxB,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,oBAAoB,EAAE,QAAQ;AAC9B,QAAA,eAAe,EAAE,SAAS;AAC1B,QAAA,uBAAuB,EAAE,SAAS;AAClC,QAAA,mBAAmB,EAAE,QAAQ;AAC7B,QAAA,6BAA6B,EAAE,2BAA2B;AAC1D,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,QAAQ,EAAE,eAAe;AAEzB,QAAA,yBAAyB,EAAE,MAAM;AACjC,QAAA,0BAA0B,EAAE,UAAU;AACtC,QAAA,uBAAuB,EAAE,OAAO;AAChC,QAAA,2BAA2B,EAAE,WAAW;AACxC,QAAA,6BAA6B,EAAE,SAAS;AACxC,QAAA,6BAA6B,EAAE,WAAW;AAC1C,QAAA,kBAAkB,EAAE,KAAK;AACzB,QAAA,yBAAyB,EAAE,SAAS;AACpC,QAAA,4BAA4B,EAAE,OAAO;AAErC,QAAA,4BAA4B,EAAE,IAAI;AAClC,QAAA,0BAA0B,EAAE,MAAM;AAClC,QAAA,2BAA2B,EAAE,OAAO;AACpC,QAAA,4BAA4B,EAAE,QAAQ;AACtC,QAAA,wBAAwB,EAAE,MAAM;AAChC,QAAA,uBAAuB,EAAE,QAAQ;AACjC,QAAA,mBAAmB,EAAE,SAAS;AAC9B,QAAA,wBAAwB,EAAE,OAAO;AACjC,QAAA,wBAAwB,EAAE,MAAM;AAEhC,QAAA,YAAY,EAAE,UAAU;AACxB,QAAA,OAAO,EAAE,KAAK;;AAGd,QAAA,SAAS,EAAE,UAAU;AACrB,QAAA,SAAS,EAAE,QAAQ;AACnB,QAAA,SAAS,EAAE,uBAAuB;AAClC,QAAA,SAAS,EAAE,QAAQ;AACnB,QAAA,SAAS,EAAE,aAAa;AACxB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,aAAa;AACxB,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,UAAU,EAAE,WAAW;AACvB,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,UAAU,EAAE,WAAW;AACvB,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,UAAU,EAAE,iBAAiB;;AAG7B,QAAA,UAAU,EAAE,iBAAiB;AAC7B,QAAA,WAAW,EAAE,kBAAkB;AAC/B,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,WAAW,EAAE,eAAe;AAC5B,QAAA,WAAW,EAAE,YAAY;AACzB,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,WAAW,EAAE,OAAO;AACpB,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,WAAW,EAAE,gBAAgB;AAC7B,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,WAAW,EAAE,OAAO;AACpB,QAAA,WAAW,EAAE,YAAY;AACzB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,aAAa,EAAE,UAAU;AACzB,QAAA,WAAW,EAAE,YAAY;AACzB,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,aAAa,EAAE,aAAa;AAC5B,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,WAAW,EAAE,aAAa;;AAG1B,QAAA,mBAAmB,EAAE,WAAW;AAChC,QAAA,oBAAoB,EAAE,cAAc;AACpC,QAAA,mBAAmB,EAAE,WAAW;AAChC,QAAA,mBAAmB,EAAE,eAAe;AACpC,QAAA,mBAAmB,EAAE,kBAAkB;AACvC,QAAA,mBAAmB,EAAE,qBAAqB;AAC1C,QAAA,mBAAmB,EAAE,SAAS;AAC9B,QAAA,mBAAmB,EAAE,mBAAmB;AACxC,QAAA,mBAAmB,EAAE,eAAe;AACpC,QAAA,mBAAmB,EAAE,eAAe;AACpC,QAAA,mBAAmB,EAAE,sBAAsB;AAC3C,QAAA,mBAAmB,EAAE,YAAY;AACjC,QAAA,oBAAoB,EAAE,2CAA2C;AACjE,QAAA,sBAAsB,EAAE,WAAW;AACnC,QAAA,sBAAsB,EAAE,cAAc;AACtC,QAAA,sBAAsB,EAAE,mBAAmB;AAC3C,QAAA,sBAAsB,EAAE,2BAA2B;AACnD,QAAA,sBAAsB,EAAE,iBAAiB;AACzC,QAAA,sBAAsB,EAAE,oBAAoB;AAC5C,QAAA,sBAAsB,EAAE,qBAAqB;AAC7C,QAAA,sBAAsB,EAAE,qBAAqB;AAC7C,QAAA,oBAAoB,EAAE,QAAQ;AAC9B,QAAA,oBAAoB,EAAE,WAAW;AACjC,QAAA,oBAAoB,EAAE,gBAAgB;;;AAItC,QAAA,sBAAsB,EAAE,oCAAoC;AAC5D,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,YAAY;AACtC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,YAAY;AACvC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,YAAY;AACvC,QAAA,yBAAyB,EAAE,aAAa;AACxC,QAAA,yBAAyB,EAAE,aAAa;;AAGxC,QAAA,sBAAsB,EAAE,uBAAuB;AAC/C,QAAA,wBAAwB,EAAE,SAAS;AACnC,QAAA,wBAAwB,EAAE,SAAS;AACnC,QAAA,wBAAwB,EAAE,SAAS;AACnC,QAAA,wBAAwB,EAAE,SAAS;AACnC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,aAAa;AACvC,QAAA,wBAAwB,EAAE,UAAU;AACpC,QAAA,wBAAwB,EAAE,UAAU;AACpC,QAAA,wBAAwB,EAAE,UAAU;AACpC,QAAA,yBAAyB,EAAE,UAAU;AACrC,QAAA,yBAAyB,EAAE,WAAW;AACtC,QAAA,yBAAyB,EAAE,WAAW;AACtC,QAAA,yBAAyB,EAAE,eAAe;AAC1C,QAAA,yBAAyB,EAAE,eAAe;AAC1C,QAAA,yBAAyB,EAAE,eAAe;AAC1C,QAAA,yBAAyB,EAAE,eAAe;AAC1C,QAAA,yBAAyB,EAAE,qCAAqC;AAChE,QAAA,yBAAyB,EAAE,qCAAqC;;AAGhE,QAAA,sBAAsB,EAAE,UAAU;AAClC,QAAA,wBAAwB,EAAE,eAAe;AACzC,QAAA,wBAAwB,EAAE,eAAe;AACzC,QAAA,wBAAwB,EAAE,eAAe;AACzC,QAAA,wBAAwB,EAAE,eAAe;AACzC,QAAA,wBAAwB,EAAE,gBAAgB;AAC1C,QAAA,wBAAwB,EAAE,gBAAgB;AAC1C,QAAA,wBAAwB,EAAE,gBAAgB;AAC1C,QAAA,wBAAwB,EAAE,gBAAgB;AAC1C,QAAA,wBAAwB,EAAE,qBAAqB;AAC/C,QAAA,yBAAyB,EAAE,qBAAqB;AAChD,QAAA,yBAAyB,EAAE,qBAAqB;AAChD,QAAA,yBAAyB,EAAE,qBAAqB;AAChD,QAAA,yBAAyB,EAAE,gBAAgB;AAC3C,QAAA,yBAAyB,EAAE,gBAAgB;AAC3C,QAAA,yBAAyB,EAAE,gBAAgB;AAC3C,QAAA,yBAAyB,EAAE,gBAAgB;;;AAI3C,QAAA,oBAAoB,EAAE,6CAA6C;AACnE,QAAA,sBAAsB,EAAE,kCAAkC;AAC1D,QAAA,sBAAsB,EAAE,uBAAuB;AAC/C,QAAA,sBAAsB,EAAE,uBAAuB;AAC/C,QAAA,sBAAsB,EAAE,wBAAwB;AAChD,QAAA,sBAAsB,EAAE,yBAAyB;AACjD,QAAA,sBAAsB,EAAE,oBAAoB;AAC5C,QAAA,sBAAsB,EAAE,kBAAkB;AAC1C,QAAA,uBAAuB,EAAE,oBAAoB;AAC7C,QAAA,uBAAuB,EAAE,2BAA2B;AACpD,QAAA,uBAAuB,EAAE,2BAA2B;AACpD,QAAA,uBAAuB,EAAE,2BAA2B;AACpD,QAAA,uBAAuB,EAAE,2BAA2B;AACpD,QAAA,uBAAuB,EAAE,+BAA+B;AACxD,QAAA,uBAAuB,EAAE,+BAA+B;;AAGxD,QAAA,oBAAoB,EAAE,oFAAoF;AAC1G,QAAA,sBAAsB,EAAE,kCAAkC;;AAG1D,QAAA,oBAAoB,EAAE,qDAAqD;AAC3E,QAAA,sBAAsB,EAAE,uBAAuB;AAC/C,QAAA,sBAAsB,EAAE,uBAAuB;AAC/C,QAAA,uBAAuB,EAAE,wBAAwB;AACjD,QAAA,uBAAuB,EAAE,wBAAwB;AACjD,QAAA,uBAAuB,EAAE,2DAA2D;AACpF,QAAA,uBAAuB,EAAE,oDAAoD;;AAG7E,QAAA,oBAAoB,EAAE,6CAA6C;AACnE,QAAA,sBAAsB,EAAE,aAAa;AACrC,QAAA,sBAAsB,EAAE,iBAAiB;AACzC,QAAA,sBAAsB,EAAE,oBAAoB;AAC5C,QAAA,sBAAsB,EAAE,4BAA4B;AACpD,QAAA,sBAAsB,EAAE,oBAAoB;AAC5C,QAAA,sBAAsB,EAAE,mBAAmB;;AAG3C,QAAA,oBAAoB,EAAE,6CAA6C;AACnE,QAAA,sBAAsB,EAAE,kBAAkB;AAC1C,QAAA,sBAAsB,EAAE,eAAe;AACvC,QAAA,sBAAsB,EAAE,mBAAmB;AAC3C,QAAA,sBAAsB,EAAE,sBAAsB;AAC9C,QAAA,sBAAsB,EAAE,cAAc;AACtC,QAAA,sBAAsB,EAAE,gBAAgB;AACxC,QAAA,sBAAsB,EAAE,qBAAqB;AAC7C,QAAA,sBAAsB,EAAE,kBAAkB;AAC1C,QAAA,sBAAsB,EAAE,iBAAiB;AACzC,QAAA,uBAAuB,EAAE,oBAAoB;AAC7C,QAAA,uBAAuB,EAAE,cAAc;AACvC,QAAA,uBAAuB,EAAE,kBAAkB;AAC3C,QAAA,2BAA2B,EAAE,wBAAwB;AACrD,QAAA,4BAA4B,EAAE,eAAe;AAC7C,QAAA,4BAA4B,EAAE,wBAAwB;AACtD,QAAA,4BAA4B,EAC1B,4FAA4F;AAC9F,QAAA,uBAAuB,EAAE,gBAAgB;AACzC,QAAA,uBAAuB,EAAE,oBAAoB;AAC7C,QAAA,yBAAyB,EAAE,iCAAiC;AAC5D,QAAA,uBAAuB,EAAE,sBAAsB;;AAG/C,QAAA,qBAAqB,EAAE,8CAA8C;AACrE,QAAA,yBAAyB,EAAE,6BAA6B;AACxD,QAAA,yBAAyB,EAAE,4BAA4B;AACvD,QAAA,yBAAyB,EAAE,6BAA6B;AACxD,QAAA,yBAAyB,EAAE,6BAA6B;AACxD,QAAA,yBAAyB,EAAE,4BAA4B;AACvD,QAAA,4BAA4B,EAAE,+BAA+B;AAC7D,QAAA,4BAA4B,EAAE,iBAAiB;AAC/C,QAAA,4BAA4B,EAAE,6BAA6B;AAC3D,QAAA,4BAA4B,EAAE,qBAAqB;AACnD,QAAA,4BAA4B,EAAE,wBAAwB;;AAGtD,QAAA,kBAAkB,EAAE,eAAe;AACnC,QAAA,oBAAoB,EAAE,uBAAuB;AAC7C,QAAA,oBAAoB,EAAE,uBAAuB;AAC7C,QAAA,oBAAoB,EAAE,YAAY;AAClC,QAAA,oBAAoB,EAAE,cAAc;AACpC,QAAA,oBAAoB,EAAE,cAAc;AACpC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,kBAAkB;AACzC,QAAA,qBAAqB,EAAE,kBAAkB;;AAGzC,QAAA,kBAAkB,EAAE,WAAW;AAC/B,QAAA,oBAAoB,EAAE,SAAS;AAC/B,QAAA,oBAAoB,EAAE,SAAS;AAC/B,QAAA,oBAAoB,EAAE,cAAc;AACpC,QAAA,oBAAoB,EAAE,SAAS;;;AAI/B,QAAA,mBAAmB,EAAE,qBAAqB;AAC1C,QAAA,mBAAmB,EAAE,aAAa;;AAGlC,QAAA,mBAAmB,EAAE,iBAAiB;AAEtC,QAAA,qBAAqB,EAAE,YAAY;AACnC,QAAA,qBAAqB,EAAE,YAAY;AACnC,QAAA,qBAAqB,EAAE,YAAY;AACnC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,sBAAsB,EAAE,YAAY;AACpC,QAAA,qBAAqB,EAAE,8CAA8C;AACrE,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,cAAc;AACrC,QAAA,qBAAqB,EAAE,YAAY;AACnC,QAAA,mBAAmB,EAAE,6BAA6B;AAClD,QAAA,qBAAqB,EAAE,wBAAwB;AAC/C,QAAA,qBAAqB,EAAE,eAAe;AACtC,QAAA,qBAAqB,EAAE,eAAe;AACtC,QAAA,qBAAqB,EAAE,eAAe;AACtC,QAAA,mBAAmB,EAAE,4BAA4B;;AAGjD,QAAA,mBAAmB,EAAE,iDAAiD;;AAGtE,QAAA,sBAAsB,EAAE,iCAAiC;AACzD,QAAA,sBAAsB,EAAE,iCAAiC;AACzD,QAAA,sBAAsB,EAAE,iCAAiC;AACzD,QAAA,sBAAsB,EAAE,iCAAiC;AACzD,QAAA,sBAAsB,EAAE,iCAAiC;AACzD,QAAA,uBAAuB,EAAE,iCAAiC;AAC1D,QAAA,uBAAuB,EAAE,iCAAiC;;AAG1D,QAAA,aAAa,EAAE,+BAA+B;AAC9C,QAAA,aAAa,EAAE,+BAA+B;AAC9C,QAAA,aAAa,EAAE,+BAA+B;AAC9C,QAAA,aAAa,EAAE,+BAA+B;AAC9C,QAAA,aAAa,EAAE,+BAA+B;AAC9C,QAAA,aAAa,EAAE,+BAA+B;AAC9C,QAAA,aAAa,EAAE,+BAA+B;AAC9C,QAAA,aAAa,EAAE,+BAA+B;AAC9C,QAAA,aAAa,EAAE,+BAA+B;AAC9C,QAAA,cAAc,EAAE,gCAAgC;AAChD,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,gCAAgC;AAChD,QAAA,cAAc,EAAE,gCAAgC;AAChD,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,+BAA+B;AAC/C,QAAA,cAAc,EAAE,mCAAmC;;AAGnD,QAAA,cAAc,EAAE,oEAAoE;AACpF,QAAA,eAAe,EAAE,oBAAoB;AACrC,QAAA,eAAe,EACb,+EAA+E;AACjF,QAAA,eAAe,EACb,qHAAqH;AACvH,QAAA,eAAe,EACb,4FAA4F;AAC9F,QAAA,eAAe,EAAE,uCAAuC;AACxD,QAAA,eAAe,EAAE,uEAAuE;AACxF,QAAA,eAAe,EAAE,mFAAmF;;AAGpG,QAAA,aAAa,EAAE,wDAAwD;AACvE,QAAA,aAAa,EAAE,oDAAoD;AACnE,QAAA,aAAa,EAAE,qCAAqC;AACpD,QAAA,aAAa,EAAE,mCAAmC;;AAGlD,QAAA,2BAA2B,EAAE,eAAe;AAC5C,QAAA,4BAA4B,EAAE,mBAAmB;;AAGjD,QAAA,uBAAuB,EAAE,iBAAiB;AAC1C,QAAA,uBAAuB,EAAE,UAAU;AACnC,QAAA,uBAAuB,EAAE,oCAAoC;AAC9D,KAAA;CACF;;ACpmDD;;;;;AAKG;AAcH;;;;AAIG;AACH,IAAY,SAaX;AAbD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,YAAA,CAAA,GAAA,SAAsB;AACtB,IAAA,SAAA,CAAA,cAAA,CAAA,GAAA,UAAyB;AACzB,IAAA,SAAA,CAAA,oBAAA,CAAA,GAAA,UAA+B;AAC/B,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,WAAsB;AACtB,IAAA,SAAA,CAAA,kBAAA,CAAA,GAAA,WAA8B;AAC9B,IAAA,SAAA,CAAA,6BAAA,CAAA,GAAA,WAAyC;AACzC,IAAA,SAAA,CAAA,uBAAA,CAAA,GAAA,WAAmC;AACnC,IAAA,SAAA,CAAA,yBAAA,CAAA,GAAA,WAAqC;AACrC,IAAA,SAAA,CAAA,4BAAA,CAAA,GAAA,mBAAgD;AAChD,IAAA,SAAA,CAAA,gBAAA,CAAA,GAAA,WAA4B;AAC5B,IAAA,SAAA,CAAA,qBAAA,CAAA,GAAA,WAAiC;AACjC,IAAA,SAAA,CAAA,uBAAA,CAAA,GAAA,WAAmC;AACrC,CAAC,EAbW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;AAiBrB;;;;;;;;;;;;;;;;AAgBG;AACI,MAAM,2BAA2B,GAAoB;IAC1D,yBAAyB;IACzB,0BAA0B;IAC1B,uBAAuB;IACvB,2BAA2B;IAC3B,6BAA6B;IAC7B,6BAA6B;IAC7B,kBAAkB;IAClB,yBAAyB;IACzB,4BAA4B;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;AAqBG;AACI,MAAM,2BAA2B,GAAoB;IAC1D,4BAA4B;IAC5B,0BAA0B;IAC1B,2BAA2B;IAC3B,4BAA4B;IAC5B,wBAAwB;IACxB,uBAAuB;IACvB,mBAAmB;IACnB,wBAAwB;IACxB,wBAAwB;CACzB;;ACtGD;;;;;AAKG;AAcH,MAAM,cAAc,GAAG,6CAA6C;AACpE,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;AAC/C,MAAM,QAAQ,GAAG,eAAe;AAEzB,MAAM,cAAc,GAA0B;IACnD,YAAY,EAAE,YAAY,CAAC,YAAY;IACvC,UAAU,EAAE,UAAU,CAAC,MAAM;CAC9B;SAEe,kBAAkB,CAAC,YAA+B,EAAE,MAAmB,EAAE,GAAW,EAAA;;AAElG,IAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACtB,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC;IACvB;;IAGA,OAAO,gCAAgC,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC;AACpE;AAEM,SAAU,SAAS,CAAC,GAAW,EAAA;IACnC,OAAO,MAAM,GAAG,GAAG;AACrB;AAEA,SAAS,aAAa,CAAC,IAAY,EAAA;AACjC,IAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACzD;AAEA,SAAS,cAAc,CAAC,KAAe,EAAE,YAAY,GAAG,EAAE,EAAA;IACxD,MAAM,KAAK,GAAG,EAAE;AAChB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,YAAY,EAAE;AACnD,QAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxD;AAEA,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB;AAEM,SAAU,eAAe,CAAC,SAAiB,EAAE,YAAY,GAAG,KAAK,EAAE,YAAY,GAAG,EAAE,EAAA;IACxF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;AAC9B,QAAA,OAAO,CAAC,IAAI,CAAC,oFAAoF,CAAC;AAClG,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;IAC1D,IAAI,YAAY,EAAE;AAChB,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;IACxB;AAEA,IAAA,OAAO,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC;AAC5C;AAEM,SAAU,eAAe,CAAC,SAAsB,EAAE,YAAY,GAAG,KAAK,EAAE,YAAY,GAAG,EAAE,EAAA;AAC7F,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC;IAEtE,IAAI,YAAY,EAAE;AAChB,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;IACxB;AAEA,IAAA,OAAO,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC;AAC5C;AAEM,SAAU,cAAc,CAAC,GAAW,EAAA;AACxC,IAAA,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;;AAGlF,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;;IAErC,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAqB;AACzF;AAEO,eAAe,sBAAsB,CAAC,IAAmB,EAAE,MAAmB,EAAA;AACnF,IAAA,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;AAC3D,IAAA,OAAO,eAAe,CAAC,UAAU,CAAC;AACpC;AAEM,SAAU,4BAA4B,CAAC,cAAuC,EAAA;AAClF,IAAA,OAAO,IAAI,GAAG,CACZ,cAAc,CAAC,GAAG,CAChB,CAAC,EACC,IAAI,EACJ,KAAK,EAAE,EACL,UAAU,EAAE,EAAE,KAAK,EAAE,GACtB,GACF,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CACpB,CACF;AACH;AAEA;;;;AAIG;AACG,SAAU,kBAAkB,CAAI,IAAS,EAAE,KAAU,EAAA;AACzD,IAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AAClB,QAAA,OAAO,IAAI;IACb;IAEA,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;AAChC,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;AACjE;AAEA;;;;AAIG;AACG,SAAU,mBAAmB,CACjC,GAAW,EACX,QAA4F,EAAA;IAE5F,MAAM,MAAM,GAAG,EAAE;AACjB,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AAC/C,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC;QACrD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACpB;IACF;AACA,IAAA,OAAO,MAAM;AACf;;AC5IA;;;;;AAKG;AAQH;;;;AAIG;MACU,iBAAiB,CAAA;IAC5B,WAAA,CACW,GAAW,EACX,IAA0B,EAAA;QAD1B,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,IAAI,GAAJ,IAAI;IACZ;AAEH;;AAEG;AACH,IAAA,SAAS,CAAC,gBAAuC,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7C;QAEA,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAC7B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;YAC9C,GAAG;AACH,YAAA,KAAK,YAAY,iBAAiB,GAAG,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,KAAK;AAC/E,SAAA,CAAC,CACH;QACD,OAAO,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;IACnD;AACD;AAOD;;AAEG;MACU,KAAK,CAAA;AAChB,IAAA,WAAA,CAAqB,KAAgB,EAAA;QAAhB,IAAA,CAAA,KAAK,GAAL,KAAK;IAAc;AAExC;;AAEG;IACH,SAAS,CAAC,gBAAuC,EAAE,eAAgC,EAAA;AACjF,QAAA,IAAI,IAAI,CAAC,KAAK,YAAY,iBAAiB,EAAE;YAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC;QAC/C;AAEA,QAAA,IAAI,IAAI,CAAC,KAAK,YAAY,IAAI,EAAE;YAC9B,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC;QAC3D;QAEA,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IACrC;AAEA;;;;AAIG;AACH,IAAA,OAAO,mBAAmB,CAAC,GAAW,EAAE,IAA0B,EAAA;QAChE,OAAO,IAAI,KAAK,CAAC,IAAI,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACpD;AACD;AAED;;;;AAIG;MACU,IAAI,CAAA;AACf,IAAA,WAAA,CAAqB,MAAe,EAAA;QAAf,IAAA,CAAA,MAAM,GAAN,MAAM;IAAY;AAEvC;;AAEG;IACH,SAAS,CAAC,gBAAuC,EAAE,eAAgC,EAAA;QACjF,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9F;AAEA;;;;AAIG;AACH,IAAA,OAAO,QAAQ,CAAC,GAAU,EAAE,KAAY,EAAE,SAAiB,EAAA;AACzD,QAAA,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;IACrD;AAEA;;;;;;;;AAQG;IACH,OAAO,OAAO,CAAC,GAAW,EAAA;AACxB,QAAA,OAAO,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpD;AAEA;;;;;AAKG;AACH,IAAA,OAAO,mBAAmB,CAAC,KAAa,EAAE,IAA0B,EAAA;AAClE,QAAA,OAAO,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3D;AACD;;AC5HD;;;;;AAKG;AAsBH;;AAEG;MACU,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CACW,IAAgC,EAChC,QAAA,GAA+B,EAAE,EACjC,KAAc,EAAA;QAFd,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,KAAK,GAAL,KAAK;IACb;AAEH;;AAEG;AACH,IAAA,aAAa,CAAC,gBAAuC,EAAA;QACnD,OAAO,IAAI,CAAC,IAAI,YAAY,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,IAAI;IACnG;AAEA;;AAEG;IACH,cAAc,CAAC,gBAAuC,EAAE,eAAgC,EAAA;QACtF,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IACtG;AAEA;;;;;;AAMG;AACH,IAAA,OAAO,4BAA4B,CAAC,IAAY,EAAE,QAA4B,EAAA;AAC5E,QAAA,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC7C;AAEA;;;;;;AAMG;AACH,IAAA,OAAO,YAAY,CAAC,eAAuB,EAAE,QAA4B,EAAA;QACvE,OAAO,IAAI,gBAAgB,CAAC,IAAI,iBAAiB,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC/E;AAEA;;;;;;AAMG;AACH,IAAA,OAAO,SAAS,CAAC,eAAuB,EAAE,KAAgB,EAAA;QACxD,OAAO,IAAI,gBAAgB,CAAC,IAAI,iBAAiB,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzG;AAEA;;;;;;AAMG;AACH,IAAA,OAAO,SAAS,CAAC,eAAuB,EAAE,KAAa,EAAA;AACrD,QAAA,OAAO,IAAI,gBAAgB,CAAC,IAAI,iBAAiB,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC;IAChF;AAEA;;;;AAIG;IACH,OAAO,aAAa,CAAC,SAAoB,EAAA;AACvC,QAAA,QAAQ,SAAS,CAAC,MAAM;AACtB,YAAA,KAAK,SAAS,CAAC,QAAQ,EAAE;AACvB,gBAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC1C;AACA,YAAA,KAAK,SAAS,CAAC,gBAAgB,EAAE;AAC/B,gBAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;YAClD;AACA,YAAA,KAAK,SAAS,CAAC,2BAA2B,EAAE;AAC1C,gBAAA,OAAO,IAAI,CAAC,oCAAoC,CAAC,SAAS,CAAC;YAC7D;AACA,YAAA,KAAK,SAAS,CAAC,qBAAqB,EAAE;gBACpC,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC;YAC1C;AACA,YAAA,KAAK,SAAS,CAAC,uBAAuB,EAAE;gBACtC,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC;YAC1C;AACA,YAAA,KAAK,SAAS,CAAC,0BAA0B,EAAE;AACzC,gBAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC;YACrD;AACA,YAAA,KAAK,SAAS,CAAC,cAAc,EAAE;AAC7B,gBAAA,MAAM,OAAO,GAAY,SAAS,CAAC,WAAW;AAC9C,gBAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACzF;AACA,YAAA,KAAK,SAAS,CAAC,mBAAmB,EAAE;AAClC,gBAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC;YACrD;AACA,YAAA,KAAK,SAAS,CAAC,qBAAqB,EAAE;AACpC,gBAAA,OAAO,IAAI,CAAC,iCAAiC,CAAC,SAAS,CAAC;YAC1D;;QAGF,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpG;IAEQ,OAAO,iBAAiB,CAAC,SAAoB,EAAA;AACnD,QAAA,MAAM,KAAK,GAAI,SAAS,CAAC,WAAyB,CAAC,UAAU;AAC7D,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;QAE7G,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,MAAM,GAAG,KAAK,GAAG,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAClG,IAAI,CAAC,mBAAmB,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAC7D;QAED,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,KAAK,CAAC;IACtD;IAEQ,OAAO,yBAAyB,CAAC,SAAoB,EAAA;AAC3D,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,WAA0B;AACrD,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAChC,SAAS,EACT,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,IAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,IAAI,KAAK,CAAC,CAAA,CAAA,EAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAC7F,CACF;IACH;IAEQ,OAAO,oCAAoC,CAAC,SAAoB,EAAA;AACtE,QAAA,MAAM,gBAAgB,GAAqB,SAAS,CAAC,WAAW;QAChE,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,GAAG,mBAAmB,GAAG,uBAAuB,CAAC,CAAC;AAC7G,QAAA,IAAI,gBAAgB,CAAC,EAAE,EAAE;YACvB,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,mBAAmB,CAAC,6BAA6B,EAAE;gBACtD,SAAS;;gBAEP,gBAAgB,CAAC,iBAAiB,IAAI;AACpC,sBAAE,IAAI,iBAAiB,CAAC,WAAW;AACnC,sBAAE,gBAAgB,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AACpD,aAAA,CAAC,CACH;QACH;QACA,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,KAAK,CAAC;IACtD;AAEQ,IAAA,OAAO,cAAc,CAAC,SAAoB,EAAE,wBAAgC,EAAA;AAClF,QAAA,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,wBAAwB,GAAG,CAAC,CAAC;AAEnF,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE;AAC5C,YAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;AACjC,gBAAA,EAAE,EAAE,eAAe,CAAC,GAAG,CAAC;aACzB,CAAC;AACH,SAAA,CAAC;IACJ;IAEQ,OAAO,4BAA4B,CAAC,SAAoB,EAAA;AAC9D,QAAA,MAAM,UAAU,GAAe,SAAS,CAAC,WAAW;QACpD,MAAM,KAAK,GAAG,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,IAAG;YAC5D,OAAO,IAAI,IAAI,CAAC;AACd,gBAAA,KAAK,CAAC,mBAAmB,CAAC,WAAW,CAAC,YAAY,CAAC;gBACnD,IAAI,KAAK,CAAC,IAAI,CAAC;gBACf,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC;AAClE,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;QACF,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,KAAK,CAAC;IACtD;IAEQ,OAAO,4BAA4B,CAAC,SAAoB,EAAA;AAC9D,QAAA,MAAM,QAAQ,GAAwB,SAAS,CAAC,WAAW;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,IAAG;YAC1D,OAAO;AACL,gBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBACjD,IAAI,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,SAAS,IAAG;oBAC3C,OAAO,IAAI,CAAC,QAAQ,CAClB,KAAK,CAAC,mBAAmB,CAAC,SAAS,CAAC,iBAAiB,CAAC,EACtD,IAAI,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EACzC,IAAI,CACL;gBACH,CAAC,CAAC,IAAI,EAAE,CAAC;aACV;AACH,QAAA,CAAC,CAAC;QAEF,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,KAAK,CAAC;IACtD;IAEQ,OAAO,iCAAiC,CAAC,SAAoB,EAAA;AACnE,QAAA,MAAM,aAAa,GAA0B,SAAS,CAAC,WAAW;AAClE,QAAA,MAAM,KAAK,GAAG,aAAa,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,YAAY,KAAI;AAC7E,YAAA,IAAI,YAAY,CAAC,iBAAiB,EAAE;AAClC,gBAAA,IAAI,YAAY,CAAC,iBAAiB,YAAY,0BAA0B,EAAE;AACxE,oBAAA,MAAM,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,IAAG;wBAC9E,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC;AACpG,oBAAA,CAAC,CAAC;AACF,oBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;gBACxB;qBAAO;AACL,oBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;gBACxE;YACF;AACA,YAAA,IAAI,YAAY,CAAC,SAAS,EAAE;gBAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC3G;AACA,YAAA,IAAI,YAAY,CAAC,OAAO,EAAE;AACxB,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACjH;AAEA,YAAA,OAAO,MAAM;QACf,CAAC,EAAE,EAAY,CAAC;QAEhB,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,KAAK,CAAC;IACtD;AAEQ,IAAA,OAAO,sBAAsB,CAAC,SAAoB,EAAE,KAAa,EAAA;QACvE,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC;AACxG,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC;IAC/D;IAEQ,OAAO,iBAAiB,CAAC,YAA2B,EAAA;AAC1D,QAAA,OAAO,YAAY,CAAC,GAAG,CAAC,WAAW,IAAG;AACpC,YAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAClE,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,OAAO,uBAAuB,CAAC,WAAwB,EAAE,SAAiB,EAAA;QAChF,OAAO;YACL,KAAK,CAAC,mBAAmB,CAAC,2BAA2B,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACxE,IAAI,KAAK,CAAC,SAAS,CAAC;YACpB,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;SACxC;IACH;AACD;;ACjQD;;;;;AAKG;AAeH;;;;;AAKG;MACU,+BAA+B,CAAA;AAC1C,IAAA,WAAA,CACW,UAAkB,EAClB,YAAoB,EACpB,kBAA0B,EAAA;QAF1B,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;IAC1B;AAEH;;AAEG;IACH,OAAO,OAAO,CAAC,GAAwB,EAAA;AACrC,QAAA,OAAO,IAAI,+BAA+B,CACxC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,EACnC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,EACrC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAC5C;IACH;AACD;AAUD;;;;;;;;AAQG;MACU,WAAW,CAAA;AAkBtB;;;AAGG;IACH,WAAA,CACW,WAA6B,EAC7B,YAA0B,EAAA;QAD1B,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,YAAY,GAAZ,YAAY;QAErB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC;AAEnD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE;IACzC;AAEA;;;;AAIG;AACH,IAAA,aAAa,yBAAyB,CAAC,cAAsB,EAAA;AAC3D,QAAA,MAAM,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC;QAChD,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC;AAErE,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;AAE/B,QAAA,MAAM,WAAW,GAAG,IAAIA,aAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAEjE,QAAA,OAAO,IAAI,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC;IACnD;AAEA;;AAEG;AACK,IAAA,aAAa,mBAAmB,CAAC,cAA2B,EAAA;QAClE,OAAO,OAAO,CAAC,GAAG,CAAC;YACjB,sBAAsB,CAAA,OAAA,2BAAqB,cAAc,CAAC;YAC1D,sBAAsB,CAAA,SAAA,6BAAuB,cAAc,CAAC;SAC7D,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACjD;IAEQ,OAAO,UAAU,CAAC,WAA6B,EAAA;QACrD,MAAM,GAAG,GAAG,4BAA4B,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC;AAC3E,QAAA,OAAO,+BAA+B,CAAC,OAAO,CAAC,GAAG,CAAC;IACrD;IAEQ,OAAO,WAAW,CAAC,WAA6B,EAAA;QACtD,MAAM,GAAG,GAAG,4BAA4B,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC;AAC5E,QAAA,OAAO,+BAA+B,CAAC,OAAO,CAAC,GAAG,CAAC;IACrD;IAEQ,eAAe,GAAA;AACrB,QAAA,MAAM,QAAQ,GAAG;YACf,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,yBAAyB,EAAE;SACjC;AACD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;QACpC,IAAI,UAAU,EAAE;AACd,YAAA,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;QAC3B;AACA,QAAA,OAAO,gBAAgB,CAAC,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC;IACzF;IAEQ,YAAY,GAAA;QAClB,OAAO,gBAAgB,CAAC,SAAS,CAC/B,SAAS,EACT,IAAI,iBAAiB,CAAC,gBAAgB,EAAE;AACtC,YAAA,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC;AACtC,SAAA,CAAC,CACH;IACH;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC;AAC5F,QAAA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;AAEzF,QAAA,OAAO,gBAAgB,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzE;IAEQ,iBAAiB,GAAA;QACvB,OAAO,gBAAgB,CAAC,SAAS,CAC/B,eAAe,EACf,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAC9E;IACH;IAEQ,WAAW,GAAA;AACjB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,IAAG;YACtE,OAAO,IAAI,CAAC,QAAQ,CAClB,KAAK,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,EAC5C,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAC9C,KAAK,CACN;AACH,QAAA,CAAC,CAAC;QAEF,OAAO,gBAAgB,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;IACpD;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,IAAG;YACvE,OAAO,IAAI,CAAC,QAAQ,CAClB,KAAK,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,EAC5C,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAC9C,KAAK,CACN;AACH,QAAA,CAAC,CAAC;QAEF,OAAO,gBAAgB,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC;IACrD;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,OAAO,gBAAgB,CAAC,SAAS,CAC/B,iCAAiC,EACjC,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,WAAW,CAAC,CACvE;IACH;IAEQ,mBAAmB,GAAA;QACzB,OAAO,gBAAgB,CAAC,SAAS,CAC/B,6BAA6B,EAC7B,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAC3E;IACH;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACtF,QAAA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAE5F,QAAA,OAAO,gBAAgB,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1E;IAEQ,yBAAyB,GAAA;QAC/B,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAC9C,8BAA8B,EAC9B,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,SAAS,CAAC,WAAW,CAAC,CACnF;AACD,QAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,6BAA6B,EAAE,CAAC;AAE1G,QAAA,OAAO,gBAAgB,CAAC,YAAY,CAAC,yBAAyB,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAC9F;IAEQ,6BAA6B,GAAA;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,SAAS;AAEpE,QAAA,IAAI,YAAY,YAAY,YAAY,EAAE;YACxC,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY;AAChE,YAAA,MAAM,gBAAgB,GACpB,WAAW,CAAC,CAAC,CAAC,KAAK;AACjB,kBAAE,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,GAAG,CAAC,IAAI;AAClE,kBAAE,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,GAAG,CAAC;;YAGjE,OAAO;AACL,gBAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE;AACvC,oBAAA,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE;iBAClC,CAAC;AACF,gBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3D,gBAAA,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC;AAC3C,gBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACnE;QACH;AAAO,aAAA,IAAI,YAAY,YAAY,WAAW,EAAE;YAC9C,OAAO;AACL,gBAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE;oBACtC,KAAK,EAAE,YAAY,CAAC,UAAU;iBAC/B,CAAC;gBACF,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAC3C;QACH;aAAO;AACL,YAAA,OAAO,EAAE;QACX;IACF;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AAChC,YAAA,OAAO,SAAS;QAClB;QAEA,OAAO,gBAAgB,CAAC,YAAY,CAClC,YAAY,EACZ,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,IAAI,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CACxF;IACH;AACD;;AC5QD;;;;;AAKG;AAEH;AAGA;;;;AAIG;MACU,gBAAgB,CAAA;AAM3B;;AAEG;AACH,IAAA,WAAA,CAA6B,KAAoB,EAAA;QAApB,IAAA,CAAA,KAAK,GAAL,KAAK;AAChC,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,GAAG,CAC/B;AACG,aAAA,KAAK;AACL,aAAA,OAAO;aACP,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CACrD;IACH;AAEA;;;;;AAKG;AACH,IAAA,aAAa,+BAA+B,CAAC,sBAAgC,EAAA;;AAE3E,QAAA,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;AAElG,QAAA,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC;IACpC;AAEA;;AAEG;AACH,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1C;AAEA;;AAEG;AACH,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACtB;AAEA;;;;;;;AAOG;AACH,IAAA,sBAAsB,CAAC,WAAyB,EAAA;QAC9C,OAAO,WAAW,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC;IAChE;AACD;;ACvED;;;;;AAKG;MAYU,mCAAmC,CAAA;IAC9C,WAAA,CACmB,qBAA4C,EAC5C,eAAgC,EAAA;QADhC,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QACrB,IAAA,CAAA,eAAe,GAAf,eAAe;IAC/B;IAEH,SAAS,CAAC,KAAmC,EAAE,IAAsB,EAAA;QACnE,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE;QACX;QAEA,QAAQ,IAAI;YACV,KAAK,MAAM,EAAE;gBACX,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC;YACxD;YACA,KAAK,OAAO,EAAE;AACZ,gBAAA,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,eAAe,CAAC;YAC/E;YACA,SAAS;AACP,gBAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;YACvD;;IAEJ;+GAtBW,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAnC,mCAAmC,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;4FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAL/C,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE,KAAK;AACZ,iBAAA;;;AChBD;;;;;AAKG;AASH;;;;;;;;;;;AAWG;MAOU,iCAAiC,CAAA;AAN9C,IAAA,WAAA,GAAA;QAQW,IAAA,CAAA,eAAe,GAAoB,CAAC;AAgC7C,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,WAAyB,KAAmB;YAChE,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,WAAW,CAAC;YACvE,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;AAC3B,QAAA,CAAC;AAED,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,gBAAmC,KAAwB;AAC9E,YAAA,OAAO,gBAAgB,EAAE,QAAQ,IAAI,EAAE;AACzC,QAAA,CAAC;AACF,IAAA;AAlCC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,gBAAgB,EAAE;AAC5B,YAAA,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,YAA4C;AAC1F,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,eAAe,CAAC;QACvD;IACF;AAEA,IAAA,iBAAiB,CAAC,WAAyB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,WAAW,EAAE;AAC5C,YAAA,IAAI,CAAC,wBAAwB,GAAG,SAAS;QAC3C;AACA,QAAA,IAAI,CAAC,mBAAmB,GAAG,WAAW;IACxC;AAEA,IAAA,sBAAsB,CAAC,gBAAmC,EAAA;AACxD,QAAA,IAAI,CAAC,wBAAwB,GAAG,gBAAgB;IAClD;AAEA,IAAA,UAAU,CAAC,WAAyB,EAAA;AAClC,QAAA,OAAO,WAAW,KAAK,IAAI,CAAC,mBAAmB;IACjD;AAEA,IAAA,eAAe,CAAC,gBAAmC,EAAA;AACjD,QAAA,OAAO,gBAAgB,KAAK,IAAI,CAAC,wBAAwB;IAC3D;+GAhCW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,4OChC9C,i+EAiFA,EAAA,MAAA,EAAA,CAAA,ymBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,+BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,mCAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDjDa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAN7C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,cAChC,KAAK,EAAA,QAAA,EAAA,i+EAAA,EAAA,MAAA,EAAA,CAAA,ymBAAA,CAAA,EAAA;;sBAKhB;;sBACA;;sBACA;;;AEnCH;;;;;AAKG;AAUH;;;;;;;;;;AAUG;MAOU,iCAAiC,CAAA;AAN9C,IAAA,WAAA,GAAA;QAOW,IAAA,CAAA,SAAS,GAAG,SAAS;QACrB,IAAA,CAAA,cAAc,GAA0B,cAAc;QAGtD,IAAA,CAAA,eAAe,GAAoB,CAAC;AAE9C,IAAA;+GAPY,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,6MChC9C,w4GAgHA,EAAA,MAAA,EAAA,CAAA,kQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDhFa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAN7C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,cAChC,KAAK,EAAA,QAAA,EAAA,w4GAAA,EAAA,MAAA,EAAA,CAAA,kQAAA,CAAA,EAAA;;sBAQhB;;sBACA;;sBACA;;;AEtCH;;;;;AAKG;AAWH;;;;;;;;;;;;;;;;AAgBG;MAYU,0BAA0B,CAAA;AAsBrC,IAAA,WAAA,CAAoB,GAAsB,EAAA;QAAtB,IAAA,CAAA,GAAG,GAAH,GAAG;QArBd,IAAA,CAAA,SAAS,GAAG,SAAS;AAS9B;;;AAGG;QACM,IAAA,CAAA,eAAe,GAAoB,CAAC;QAI7C,IAAA,CAAA,OAAO,GAAG,KAAK;IAI8B;AAE7C,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,6BAA6B,CAAC,EAAE;AAC1C,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,6BAA6B,CAAC;AACrD,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY;AACnC,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa;AAErC,YAAA,IACE,CAAC,MAAM,CAAC,aAAa,EAAE;iBACtB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAC/F;gBACA;YACF;YAEA,IAAI,CAAC,qBAAqB,EAAE;QAC9B;IACF;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;QAE3B,MAAM,OAAO,GAAG,gBAAgB,CAAC,+BAA+B,CAAC,IAAI,CAAC,2BAA2B,CAAC;AAClG,QAAA,IAAI,CAAC,uBAAuB,GAAG,OAAO;QACtC;aACG,IAAI,CAAC,MAAM,IAAG;AACb,YAAA,IAAI,IAAI,CAAC,uBAAuB,KAAK,OAAO,EAAE;AAC5C,gBAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM;YAChC;AACF,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,GAAY,KAAI;AACtB,YAAA,IAAI,IAAI,CAAC,uBAAuB,KAAK,OAAO,EAAE;AAC5C,gBAAA,IAAI,CAAC,UAAU,GAAG,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;YACpE;AACF,QAAA,CAAC;aACA,OAAO,CAAC,MAAK;AACZ,YAAA,IAAI,IAAI,CAAC,uBAAuB,KAAK,OAAO,EAAE;AAC5C,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB;AACF,QAAA,CAAC,CAAC;IACN;+GAjEW,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EAN1B;YACT,qBAAqB;AACrB,YAAA,EAAE,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,kBAAkB,EAAE;AACvE,YAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,YAAY,EAAE;AAC5D,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1CH,itFAoEA,EAAA,MAAA,EAAA,CAAA,isDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,iCAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iCAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDxBa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAXtC,SAAS;+BACE,0BAA0B,EAAA,UAAA,EACxB,KAAK,EAAA,SAAA,EAGN;wBACT,qBAAqB;AACrB,wBAAA,EAAE,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,kBAAkB,EAAE;AACvE,wBAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,YAAY,EAAE;AAC5D,qBAAA,EAAA,QAAA,EAAA,itFAAA,EAAA,MAAA,EAAA,CAAA,isDAAA,CAAA,EAAA;;sBAUA;;sBAMA;;;AE1DH;;;;;AAKG;MAsCU,4BAA4B,CAAA;AACvC,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;IAClC;+GAHW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,iBAPrC,0BAA0B;YAC1B,iCAAiC;YACjC,iCAAiC;AACjC,YAAA,mCAAmC,aAZnC,oBAAoB;YACpB,iBAAiB;YACjB,mBAAmB;YACnB,gBAAgB;YAChB,oBAAoB;YACpB,YAAY;AACZ,YAAA,YAAY,aAQJ,0BAA0B,CAAA,EAAA,CAAA,CAAA;AAEzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,YAhBrC,oBAAoB;YACpB,iBAAiB;YACjB,mBAAmB;YACnB,gBAAgB;YAChB,oBAAoB;YACpB,YAAY;YACZ,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAUH,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAlBxC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,iBAAiB;wBACjB,mBAAmB;wBACnB,gBAAgB;wBAChB,oBAAoB;wBACpB,YAAY;wBACZ,YAAY;AACb,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,0BAA0B;wBAC1B,iCAAiC;wBACjC,iCAAiC;wBACjC,mCAAmC;AACpC,qBAAA;oBACD,OAAO,EAAE,CAAC,0BAA0B,CAAC;AACtC,iBAAA;;;AC1CD;;;;;AAKG;;ACLH;;AAEG;;"}
|
|
1
|
+
{"version":3,"file":"hermes-ui-angular-addons-certificate-viewer.mjs","sources":["../../../addons/certificate-viewer/certificate-viewer.l10n.ts","../../../addons/certificate-viewer/certificate.constants.ts","../../../addons/certificate-viewer/certificate.util.ts","../../../addons/certificate-viewer/models/partial-translate.model.ts","../../../addons/certificate-viewer/models/certificate-field.model.ts","../../../addons/certificate-viewer/models/certificate.model.ts","../../../addons/certificate-viewer/models/certificate-chain.model.ts","../../../addons/certificate-viewer/certificate-viewer-translate-field/certificate-viewer-translate-field.pipe.ts","../../../addons/certificate-viewer/certificate-viewer-details/certificate-viewer-details.component.ts","../../../addons/certificate-viewer/certificate-viewer-details/certificate-viewer-details.component.html","../../../addons/certificate-viewer/certificate-viewer-general/certificate-viewer-general.component.ts","../../../addons/certificate-viewer/certificate-viewer-general/certificate-viewer-general.component.html","../../../addons/certificate-viewer/certificate-viewer/certificate-viewer.component.ts","../../../addons/certificate-viewer/certificate-viewer/certificate-viewer.component.html","../../../addons/certificate-viewer/certificate-viewer.module.ts","../../../addons/certificate-viewer/index.ts","../../../addons/certificate-viewer/hermes-ui-angular-addons-certificate-viewer.ts"],"sourcesContent":["/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\n// Disable the duplicate string check because this is a translations file.\r\n\r\nimport { AppfxTranslations } from '@hermes-ui/angular/addons/translate';\r\n\r\nexport const translations: AppfxTranslations = {\r\n en: {\r\n loading: 'Loading',\r\n\r\n 'issued-to': 'Issued To',\r\n 'issued-by': 'Issued By',\r\n 'issued-on': 'Issued On',\r\n 'expires-on': 'Expires On',\r\n 'validity-period': 'Validity Period',\r\n fingerprints: 'Fingerprints',\r\n 'sha-256-fingerprint': 'SHA-256 Fingerprint',\r\n 'sha-1-fingerprint': 'SHA-1 Fingerprint',\r\n title: 'Certificate viewer: {{title}}',\r\n general: 'General',\r\n details: 'Details',\r\n 'not-part-of-certificate': '<Not part of certificate>',\r\n 'certificate-hierarchy': 'Certificate Hierarchy',\r\n 'certificate-fields': 'Certificate Fields',\r\n 'field-value': 'Field Value',\r\n version: 'Version',\r\n 'version-format': 'Version {{version}}',\r\n validity: 'Validity',\r\n 'not-before': 'Not Before',\r\n 'not-after': 'Not After',\r\n 'serial-number': 'Serial Number',\r\n issuer: 'Issuer',\r\n subject: 'Subject',\r\n 'certificate-signature-algorithm': 'Certificate Signature Algorithm',\r\n 'certificate-signature-value': 'Certificate Signature Value',\r\n 'subject-public-key-info': 'Subject Public Key Info',\r\n 'subject-public-key-algorithm': 'Subject Public Key Algorithm',\r\n 'subjects-public-key': \"Subject's Public Key\",\r\n 'modulus-bits': 'Modulus ({{bits}} bits):',\r\n 'public-exponent': 'Public Exponent:',\r\n 'named-curve': 'Named Curve: {{curve}}',\r\n extensions: 'Extensions',\r\n critical: 'Critical',\r\n 'not-critical': 'Not critical',\r\n signing: 'Signing',\r\n 'certificate-signer': 'Certificate Signer',\r\n 'hermes-signer': 'CRL Signer',\r\n 'is-not-cert-authority': 'Is not a Certification Authority',\r\n 'is-cert-authority': 'Is a Certification Authority',\r\n 'max-number-intermediate-CAs': 'Maximum number of intermediate CAs: {{maxNumber}}',\r\n unlimited: 'unlimited',\r\n 'key-id': 'Key ID: {{id}}',\r\n\r\n 'general-name-other-name': 'Other Name',\r\n 'general-name-rfc822-name': 'RFC822 Name',\r\n 'general-name-dns-name': 'DNS Name',\r\n 'general-name-x400-address': 'X400 Address',\r\n 'general-name-directory-name': 'Directory Name',\r\n 'general-name-edi-party-name': 'EDI Party Name',\r\n 'general-name-uri': 'URI',\r\n 'general-name-ip-address': 'IP Address',\r\n 'general-name-registered-id': 'Registered ID',\r\n\r\n 'key-usage-digitalSignature': 'Signing',\r\n 'key-usage-nonRepudiation': 'Non Repudiation',\r\n 'key-usage-keyEncipherment': 'Key Encipherment',\r\n 'key-usage-dataEncipherment': 'Data Encipherment',\r\n 'key-usage-keyAgreement': 'Key Agreement',\r\n 'key-usage-keyCertSign': 'Certificate Signer',\r\n 'key-usage-cRLSign': 'CRL Signer',\r\n 'key-usage-encipherOnly': 'Encipher Only',\r\n 'key-usage-decipherOnly': 'Decipher Only',\r\n\r\n 'crl-issuer': 'CRL Issuer:',\r\n reasons: 'Reasons:',\r\n\r\n // X.500 Attributes 2.5.4.* with their relative distinguished names (RDNs)\r\n '2.5.4.3': 'Common Name (CN)',\r\n '2.5.4.4': 'Surname (SN)',\r\n '2.5.4.5': 'Serial Number (SERIALNUMBER)',\r\n '2.5.4.6': 'Country Name (C)',\r\n '2.5.4.7': 'Locality Name (L)',\r\n '2.5.4.8': 'State or Province Name (ST)',\r\n '2.5.4.9': 'Street Address (STREET)',\r\n '2.5.4.10': 'Organization Name (O)',\r\n '2.5.4.11': 'Organizational Unit (OU)',\r\n '2.5.4.12': 'Title (T)',\r\n '2.5.4.43': 'Initials (I)',\r\n '2.5.4.42': 'Given Name (GN)',\r\n '2.5.4.44': 'Generation Qualifier',\r\n '2.5.4.46': 'Distinguished Name Qualifier (DN Qualifier)',\r\n\r\n // Certificate Extension 2.5.29.*\r\n '2.5.29.9': 'Subject Directory Attributes',\r\n '2.5.29.14': 'Certificate Subject Key ID',\r\n '2.5.29.15': 'Certificate Key Usage',\r\n '2.5.29.16': 'Private Key Usage',\r\n '2.5.29.17': 'Certificate Subject Alternative Name',\r\n '2.5.29.18': 'Certificate Issuer Alternative Name',\r\n '2.5.29.19': 'Certificate Basic Constraints',\r\n '2.5.29.20': 'CRL Number',\r\n '2.5.29.21': 'Reason Code',\r\n '2.5.29.23': 'Hold Instruction Code',\r\n '2.5.29.24': 'Invalidity Date',\r\n '2.5.29.27': 'Delta CRL Indicator',\r\n '2.5.29.28': 'Issuing Distribution Point',\r\n '2.5.29.29': 'Certificate Issuer',\r\n '2.5.29.30': 'Name Constraints',\r\n '2.5.29.31': 'CRL Distribution Points',\r\n '2.5.29.32': 'Certificate Policies',\r\n '2.5.29.32.0': 'Any policy',\r\n '2.5.29.33': 'Policy Mappings',\r\n '2.5.29.35': 'Certificate Authority Key ID',\r\n '2.5.29.36': 'Policy Constraints',\r\n '2.5.29.37': 'Extended Key Usage',\r\n '2.5.29.37.0': 'Any extended key usage',\r\n '2.5.29.46': 'Freshest CRL',\r\n '2.5.29.54': 'Inhibit Any Policy',\r\n\r\n // PKIX 1.3.6.1.5.5.7.*\r\n '1.3.6.1.5.5.7.1.1': 'Authority Information Access',\r\n '1.3.6.1.5.5.7.1.11': 'Subject Information Access',\r\n '1.3.6.1.5.5.7.2.1': 'Certificate Practice Statement Pointer',\r\n '1.3.6.1.5.5.7.3.1': 'TLS WWW Server Authentication',\r\n '1.3.6.1.5.5.7.3.2': 'TLS WWW Client Authentication',\r\n '1.3.6.1.5.5.7.3.3': 'Signing of Downloadable Executable Code',\r\n '1.3.6.1.5.5.7.3.4': 'Email Protection',\r\n '1.3.6.1.5.5.7.3.5': 'IPSEC End System Certificate',\r\n '1.3.6.1.5.5.7.3.6': 'IPSEC Tunnel Certificate',\r\n '1.3.6.1.5.5.7.3.7': 'IPSEC User Certificate',\r\n '1.3.6.1.5.5.7.3.8': 'PKIX key purpose Time Stamping',\r\n '1.3.6.1.5.5.7.3.9': 'Signing OCSP Responses',\r\n '1.3.6.1.5.5.7.48.1': 'Online Certificate Status Protocol (OCSP)',\r\n '1.3.6.1.5.5.7.48.1.1': 'OCSP Basic Response',\r\n '1.3.6.1.5.5.7.48.1.2': 'OCSP Nonce Extension',\r\n '1.3.6.1.5.5.7.48.1.3': 'Certificate Revocation List (CRL) reference',\r\n '1.3.6.1.5.5.7.48.1.4': 'Response types understood by an OCSP client',\r\n '1.3.6.1.5.5.7.48.1.5': 'OCSP No Check Extension',\r\n '1.3.6.1.5.5.7.48.1.6': 'OCSP Archive Cutoff Extension',\r\n '1.3.6.1.5.5.7.48.1.7': 'OCSP Service Locator Extension',\r\n '1.3.6.1.5.5.7.48.1.8': 'Client Indication Of Preferred Signature Algorithms',\r\n '1.3.6.1.5.5.7.48.2': 'Certificate Authority Issuers',\r\n '1.3.6.1.5.5.7.48.3': 'Time Stamping',\r\n '1.3.6.1.5.5.7.48.5': 'Certificate Authority (CA) Repository',\r\n\r\n // -- NIST --\r\n // AES 2.16.840.1.101.3.4.1.*\r\n '2.16.840.1.101.3.4.1': 'Advanced Encryption Standard (AES)',\r\n '2.16.840.1.101.3.4.1.1': 'AES-128 ECB',\r\n '2.16.840.1.101.3.4.1.2': 'AES-128 CBC',\r\n '2.16.840.1.101.3.4.1.3': 'AES-128 OFB',\r\n '2.16.840.1.101.3.4.1.4': 'AES-128 CFB',\r\n '2.16.840.1.101.3.4.1.5': 'AES-128 KW',\r\n '2.16.840.1.101.3.4.1.6': 'AES-128 GCM',\r\n '2.16.840.1.101.3.4.1.8': 'AES-128 KWP',\r\n '2.16.840.1.101.3.4.1.21': 'AES-192 ECB',\r\n '2.16.840.1.101.3.4.1.22': 'AES-192 CBC',\r\n '2.16.840.1.101.3.4.1.23': 'AES-192 OFB',\r\n '2.16.840.1.101.3.4.1.24': 'AES-192 CFB',\r\n '2.16.840.1.101.3.4.1.25': 'AES-192 KW',\r\n '2.16.840.1.101.3.4.1.26': 'AES-192 GCM',\r\n '2.16.840.1.101.3.4.1.28': 'AES-192 KWP',\r\n '2.16.840.1.101.3.4.1.41': 'AES-256 ECB',\r\n '2.16.840.1.101.3.4.1.42': 'AES-256 CBC',\r\n '2.16.840.1.101.3.4.1.43': 'AES-256 OFB',\r\n '2.16.840.1.101.3.4.1.44': 'AES-256 CFB',\r\n '2.16.840.1.101.3.4.1.45': 'AES-256 KW',\r\n '2.16.840.1.101.3.4.1.46': 'AES-256 GCM',\r\n '2.16.840.1.101.3.4.1.48': 'AES-256 KWP',\r\n\r\n // Secure Hash Algorithms 2.16.840.1.101.3.4.2.*\r\n '2.16.840.1.101.3.4.2': 'Secure Hash Algorithms',\r\n '2.16.840.1.101.3.4.2.1': 'SHA-256',\r\n '2.16.840.1.101.3.4.2.2': 'SHA-384',\r\n '2.16.840.1.101.3.4.2.3': 'SHA-512',\r\n '2.16.840.1.101.3.4.2.4': 'SHA-224',\r\n '2.16.840.1.101.3.4.2.5': 'SHA-512/224',\r\n '2.16.840.1.101.3.4.2.6': 'SHA-512/256',\r\n '2.16.840.1.101.3.4.2.7': 'SHA3-224',\r\n '2.16.840.1.101.3.4.2.8': 'SHA3-256',\r\n '2.16.840.1.101.3.4.2.9': 'SHA3-384',\r\n '2.16.840.1.101.3.4.2.10': 'SHA3-512',\r\n '2.16.840.1.101.3.4.2.11': 'SHAKE-128',\r\n '2.16.840.1.101.3.4.2.12': 'SHAKE-256',\r\n '2.16.840.1.101.3.4.2.13': 'HMAC-SHA3-224',\r\n '2.16.840.1.101.3.4.2.14': 'HMAC-SHA3-256',\r\n '2.16.840.1.101.3.4.2.15': 'HMAC-SHA3-384',\r\n '2.16.840.1.101.3.4.2.16': 'HMAC-SHA3-512',\r\n '2.16.840.1.101.3.4.2.17': 'SHAKE-128 with parameter ShakeOutputLen',\r\n '2.16.840.1.101.3.4.2.18': 'SHAKE-256 with parameter ShakeOutputLen',\r\n\r\n // Signature Algorithms 2.16.840.1.101.3.4.3.*\r\n '2.16.840.1.101.3.4.3': 'Signature Algorithms',\r\n '2.16.840.1.101.3.4.3.1': 'SHA-224 With DSA',\r\n '2.16.840.1.101.3.4.3.2': 'SHA-256 With DSA',\r\n '2.16.840.1.101.3.4.3.3': 'SHA-384 With DSA',\r\n '2.16.840.1.101.3.4.3.4': 'SHA-512 With DSA',\r\n '2.16.840.1.101.3.4.3.5': 'SHA3-224 With DSA',\r\n '2.16.840.1.101.3.4.3.6': 'SHA3-256 With DSA',\r\n '2.16.840.1.101.3.4.3.7': 'SHA3-384 With DSA',\r\n '2.16.840.1.101.3.4.3.8': 'SHA3-512 With DSA',\r\n '2.16.840.1.101.3.4.3.9': 'SHA3-224 With EHERMESA',\r\n '2.16.840.1.101.3.4.3.10': 'SHA3-256 With EHERMESA',\r\n '2.16.840.1.101.3.4.3.11': 'SHA3-384 With EHERMESA',\r\n '2.16.840.1.101.3.4.3.12': 'SHA3-512 With EHERMESA',\r\n '2.16.840.1.101.3.4.3.13': 'SHA3-224 With RSA',\r\n '2.16.840.1.101.3.4.3.14': 'SHA3-256 With RSA',\r\n '2.16.840.1.101.3.4.3.15': 'SHA3-384 With RSA',\r\n '2.16.840.1.101.3.4.3.16': 'SHA3-512 With RSA',\r\n\r\n // RSA Security\r\n // PKCS1 1.2.840.113549.1.1.*\r\n '1.2.840.113549.1.1': 'Public-Key Cryptography Standards (PKCS) #1',\r\n '1.2.840.113549.1.1.1': 'PKCS #1 RSAES-PKCS1-v1_5 encryption scheme',\r\n '1.2.840.113549.1.1.2': 'PKCS #1 MD2 With RSA Encryption',\r\n '1.2.840.113549.1.1.4': 'PKCS #1 MD5 With RSA Encryption',\r\n '1.2.840.113549.1.1.5': 'PKCS #1 SHA1 With RSA Encryption',\r\n '1.2.840.113549.1.1.7': 'PKCS #1 RSA OAEP Encryption Set',\r\n '1.2.840.113549.1.1.8': 'PKCS #1 RSA With MGF1',\r\n '1.2.840.113549.1.1.9': 'PKCS #1 RSA PSpecified',\r\n '1.2.840.113549.1.1.10': 'PKCS #1 RSASSA-PSS',\r\n '1.2.840.113549.1.1.11': 'PKCS #1 SHA-256 With RSA Encryption',\r\n '1.2.840.113549.1.1.12': 'PKCS #1 SHA-384 With RSA Encryption',\r\n '1.2.840.113549.1.1.13': 'PKCS #1 SHA-512 With RSA Encryption',\r\n '1.2.840.113549.1.1.14': 'PKCS #1 SHA-224 With RSA Encryption',\r\n '1.2.840.113549.1.1.15': 'PKCS #1 SHA-512/224 With RSA Encryption',\r\n '1.2.840.113549.1.1.16': 'PKCS #1 SHA-512/256 With RSA Encryption',\r\n\r\n // PKCS3 1.2.840.113549.1.3.*\r\n '1.2.840.113549.1.3': 'Public-Key Cryptography Standards (PKCS) #3: Diffie-Hellman Key-Agreement Standard',\r\n '1.2.840.113549.1.3.1': 'PKCS #3 Diffie-Hellman (DH) key agreement',\r\n\r\n // PKCS5 1.2.840.113549.1.5.*\r\n '1.2.840.113549.1.5': 'PKCS #5 Public-Key Cryptography Standards (PKCS) #5',\r\n '1.2.840.113549.1.5.3': 'PKCS #5 PBE With MD5 And DES',\r\n '1.2.840.113549.1.5.6': 'PKCS #5 PBE With MD5 And RC2',\r\n '1.2.840.113549.1.5.10': 'PKCS #5 PBE With SHA1 And DES',\r\n '1.2.840.113549.1.5.11': 'PKCS #5 PBE With SHA1 And RC2',\r\n '1.2.840.113549.1.5.12': 'PKCS #5 Password-Based Key Derivation Function 2 (PBKDF2)',\r\n '1.2.840.113549.1.5.13': 'PKCS #5 Password-Based Encryption Scheme 2 (PBES2)',\r\n\r\n // PKCS7 1.2.840.113549.1.7.*\r\n '1.2.840.113549.1.7': 'Public-Key Cryptography Standards (PKCS) #7',\r\n '1.2.840.113549.1.7.1': 'PKCS #7 Data',\r\n '1.2.840.113549.1.7.2': 'PKCS #7 Signed Data',\r\n '1.2.840.113549.1.7.3': 'PKCS #7 Enveloped Data',\r\n '1.2.840.113549.1.7.4': 'PKCS #7 Signed And Enveloped Data',\r\n '1.2.840.113549.1.7.5': 'PKCS #7 Digested Data',\r\n '1.2.840.113549.1.7.6': 'PKCS #7 Encrypted Data',\r\n\r\n // PKCS9 1.2.840.113549.1.9.*\r\n '1.2.840.113549.1.9': 'Public-Key Cryptography Standards (PKCS) #9',\r\n '1.2.840.113549.1.9.1': 'PKCS #9 Email Address',\r\n '1.2.840.113549.1.9.2': 'PKCS #9 Unstructured Name',\r\n '1.2.840.113549.1.9.3': 'PKCS #9 Content Type',\r\n '1.2.840.113549.1.9.4': 'PKCS #9 Message Digest',\r\n '1.2.840.113549.1.9.5': 'PKCS #9 Signing Time',\r\n '1.2.840.113549.1.9.6': 'PKCS #9 Counter Signature',\r\n '1.2.840.113549.1.9.7': 'PKCS #9 Challenge Password',\r\n '1.2.840.113549.1.9.8': 'PKCS #9 Unstructured Address',\r\n '1.2.840.113549.1.9.9': 'PKCS #9 Extended Certificate Attributes',\r\n '1.2.840.113549.1.9.10': 'PKCS #9 Issuer And Serial Number',\r\n '1.2.840.113549.1.9.14': 'PKCS #9 Extension Request',\r\n '1.2.840.113549.1.9.15': 'PKCS #9 SMIME Capability',\r\n '1.2.840.113549.1.9.16.1.4': 'PKCS #9 Time Stamp Token Info',\r\n '1.2.840.113549.1.9.16.2.12': 'PKCS #9 Signing Certificate',\r\n '1.2.840.113549.1.9.16.2.14': 'PKCS #9 Signature Timestamp Token',\r\n '1.2.840.113549.1.9.16.3.18':\r\n 'PKCS #9 AEAD_CHACHA20_POLY1305 Authenticated Encryption With Associated Data (AEAD) algorithm',\r\n '1.2.840.113549.1.9.20': 'PKCS #9 Friendly Name',\r\n '1.2.840.113549.1.9.21': 'PKCS #9 Local Key Id',\r\n '1.2.840.113549.1.9.22.1': 'PKCS #9 x509Certificate (for PKCS #12)',\r\n '1.2.840.113549.1.9.52': 'PKCS #9 CMS Algorithm Protection',\r\n\r\n // PKCS12 1.2.840.113549.1.12.*\r\n '1.2.840.113549.1.12': 'Public-Key Cryptography Standards (PKCS) #12',\r\n '1.2.840.113549.1.12.1.1': 'PKCS #12 SHA1-PBE With RC4-128',\r\n '1.2.840.113549.1.12.1.2': 'PKCS #12 SHA1-PBE With RC4-40',\r\n '1.2.840.113549.1.12.1.3': 'PKCS #12 SHA1-PBE With DES-EDE',\r\n '1.2.840.113549.1.12.1.5': 'PKCS #12 SHA1-PBE With RC2-128',\r\n '1.2.840.113549.1.12.1.6': 'PKCS #12 SHA1-PBE With RC2-40',\r\n '1.2.840.113549.1.12.10.1.1': 'PKCS #12 PKCS #8 Shrouded Key Bag',\r\n '1.2.840.113549.1.12.10.1.3': 'PKCS #12 Certificate Bag',\r\n '1.2.840.113549.1.12.10.1.4': 'PKCS #12 Certificate Revocation List (CRL) bag',\r\n '1.2.840.113549.1.12.10.1.5': 'PKCS #12 Secret Bag',\r\n '1.2.840.113549.1.12.10.1.6': 'PKCS #12 Safe Contents Bag',\r\n\r\n // Digest Algorithms 1.2.840.113549.2.*\r\n '1.2.840.113549.2': 'Digest Algorithms',\r\n '1.2.840.113549.2.2': 'Message Digest #2 (MD2)',\r\n '1.2.840.113549.2.5': 'Message Digest #5 (MD5)',\r\n '1.2.840.113549.2.7': 'HMAC-SHA-1',\r\n '1.2.840.113549.2.8': 'HMAC-SHA-224',\r\n '1.2.840.113549.2.9': 'HMAC-SHA-256',\r\n '1.2.840.113549.2.10': 'HMAC-SHA-384',\r\n '1.2.840.113549.2.11': 'HMAC-SHA-512',\r\n '1.2.840.113549.2.12': 'HMAC-SHA-512/224',\r\n '1.2.840.113549.2.13': 'HMAC-SHA-512/256',\r\n\r\n // Encryption Algorithms 1.2.840.113549.3.*\r\n '1.2.840.113549.3': 'Encryption Algorithms',\r\n '1.2.840.113549.3.2': 'RC2-CBC',\r\n '1.2.840.113549.3.4': 'RC4-CBC',\r\n '1.2.840.113549.3.7': 'DES-EDE3-CBC',\r\n '1.2.840.113549.3.9': 'RC5-CBC',\r\n\r\n // -- ANSI --\r\n // X9 1.2.840.10040.4.*\r\n '1.2.840.10040.4.1': 'Dsa Subject Public Key',\r\n '1.2.840.10040.4.3': 'DSA With SHA-1',\r\n\r\n // X9.62 1.2.840.10045.*\r\n '1.2.840.10045.2.1': 'Elliptic Curve Public Key Cryptography',\r\n\r\n '1.2.840.10045.3.0.5': 'TNB 191 V1',\r\n '1.2.840.10045.3.0.6': 'TNB 191 V2',\r\n '1.2.840.10045.3.0.7': 'TNB 191 V3',\r\n '1.2.840.10045.3.0.11': 'TNB 239 V1',\r\n '1.2.840.10045.3.0.12': 'TNB 239 V2',\r\n '1.2.840.10045.3.0.13': 'TNB 239 V3',\r\n '1.2.840.10045.3.0.18': 'TNB 359 V1',\r\n '1.2.840.10045.3.0.20': 'TNB 431 R1',\r\n '1.2.840.10045.3.1.1': 'Elliptic curve domain \"secp192r1\" listed in \"SEC 2\" recommended elliptic curve domain',\r\n '1.2.840.10045.3.1.2': 'Prime 192 V2',\r\n '1.2.840.10045.3.1.3': 'Prime 192 V3',\r\n '1.2.840.10045.3.1.4': 'Prime 239 V1',\r\n '1.2.840.10045.3.1.5': 'Prime 239 V2',\r\n '1.2.840.10045.3.1.6': 'Prime 239 V3',\r\n '1.2.840.10045.3.1.7': 'NIST P-256',\r\n '1.2.840.10045.4.1': 'ANSI X9.62 EHERMESA With SHA-1',\r\n '1.2.840.10045.4.3.1': 'EHERMESA WithSHA-224 signature values',\r\n '1.2.840.10045.4.3.2': 'DSA With SHA-256',\r\n '1.2.840.10045.4.3.3': 'DSA With SHA-384',\r\n '1.2.840.10045.4.3.4': 'DSA With SHA-512',\r\n '1.2.840.10045.4.3': 'ANSI X9.62 EHERMESA With SHA2',\r\n\r\n // X9.42 1.2.840.10046.2.*\r\n '1.2.840.10046.2.1': 'Ephemeral-Static Diffie-Hellman (DH) key agreement algorithm',\r\n\r\n // Teletrust 1.3.36.*\r\n '1.3.36.3.3.2.8.1.1.1': 'Brainpool P160r1 domain parameter set',\r\n '1.3.36.3.3.2.8.1.1.3': 'Brainpool P192r1 domain parameter set',\r\n '1.3.36.3.3.2.8.1.1.5': 'Brainpool P224r1 domain parameter set',\r\n '1.3.36.3.3.2.8.1.1.7': 'Brainpool P256r1 domain parameter set',\r\n '1.3.36.3.3.2.8.1.1.9': 'Brainpool P320r1 domain parameter set',\r\n '1.3.36.3.3.2.8.1.1.11': 'Brainpool P384r1 domain parameter set',\r\n '1.3.36.3.3.2.8.1.1.13': 'Brainpool P512r1 domain parameter set',\r\n\r\n // Certicom 1.3.132.*\r\n '1.3.132.0.1': '\"SEC 2\" recommended elliptic curve domain \"sect163k1\"',\r\n '1.3.132.0.2': '\"SEC 2\" recommended elliptic curve domain \"sect163r1\"',\r\n '1.3.132.0.3': '\"SEC 2\" recommended elliptic curve domain \"sect239k1\"',\r\n '1.3.132.0.4': '\"SEC 2\" recommended elliptic curve domain \"sect113r1\"',\r\n '1.3.132.0.5': '\"SEC 2\" recommended elliptic curve domain \"sect113r2\"',\r\n '1.3.132.0.6': '\"SEC 2\" recommended elliptic curve domain \"secp112r1\"',\r\n '1.3.132.0.7': '\"SEC 2\" recommended elliptic curve domain \"secp112r2\"',\r\n '1.3.132.0.8': '\"SEC 2\" recommended elliptic curve domain \"secp160r1\"',\r\n '1.3.132.0.9': '\"SEC 2\" recommended elliptic curve domain \"secp160k1\"',\r\n '1.3.132.0.10': '\"SEC 2\" recommended elliptic curve domain \"ansip256k1\"',\r\n '1.3.132.0.15': '\"SEC 2\" recommended elliptic curve domain \"sect163r2\"',\r\n '1.3.132.0.16': '\"SEC 2\" recommended elliptic curve domain \"sect283k1\"',\r\n '1.3.132.0.17': '\"SEC 2\" recommended elliptic curve domain \"sect283r1\"',\r\n '1.3.132.0.22': '\"SEC 2\" recommended elliptic curve domain \"sect131r1\"',\r\n '1.3.132.0.23': '\"SEC 2\" recommended elliptic curve domain \"sect131r2\"',\r\n '1.3.132.0.24': '\"SEC 2\" recommended elliptic curve domain \"sect193r1\"',\r\n '1.3.132.0.25': '\"SEC 2\" recommended elliptic curve domain \"sect193r2\"',\r\n '1.3.132.0.26': '\"SEC 2\" recommended elliptic curve domain \"sect233k1\"',\r\n '1.3.132.0.27': '\"SEC 2\" recommended elliptic curve domain \"sect233r1\"',\r\n '1.3.132.0.28': '\"SEC 2\" recommended elliptic curve domain \"secp128r1\"',\r\n '1.3.132.0.29': '\"SEC 2\" recommended elliptic curve domain \"secp128r2\"',\r\n '1.3.132.0.30': '\"SEC 2\" recommended elliptic curve domain \"secp160r2\"',\r\n '1.3.132.0.31': '\"SEC 2\" recommended elliptic curve domain \"secp192k1\"',\r\n '1.3.132.0.32': '\"SEC 2\" recommended elliptic curve domain \"secp224k1\"',\r\n '1.3.132.0.33': '\"SEC 2\" recommended elliptic curve domain \"secp224r1\"',\r\n '1.3.132.0.34': 'National Institute of Standards and Technology (NIST) 384-bit elliptic curve',\r\n '1.3.132.0.35': 'National Institute of Standards and Technology (NIST) 512-bit elliptic curve',\r\n '1.3.132.0.36': '\"SEC 2\" recommended elliptic curve domain \"sect409k1\"',\r\n '1.3.132.0.37': '\"SEC 2\" recommended elliptic curve domain \"sect409r1\"',\r\n '1.3.132.0.38': '\"SEC 2\" recommended elliptic curve domain \"sect571k1\"',\r\n '1.3.132.0.39': '\"SEC 2\" recommended elliptic curve domain \"sect571r1\"',\r\n '1.3.132.1.12': 'Elliptic Curve Diffie-Hellman (ECDH) algorithm',\r\n\r\n // OIW secsig 1.3.14.3.*\r\n '1.3.14.3.2.7':\r\n 'Single-key Data Encryption Standard (DES) in Cipher Block Chaining (CBC) mode with padding operation',\r\n '1.3.14.3.2.12': 'Digital Signature Algorithm (DSA)',\r\n '1.3.14.3.2.13':\r\n 'Security Digital Signature Algorithm (DSA) that uses the Secure Hash Algorithm (SHA) to hash the message contents',\r\n '1.3.14.3.2.15':\r\n 'Rivest, Shamir and Adleman (RSA) algorithm coupled with the Secure Hash Algorithm (SHA) (Oddball using ISO/IEC 9796-2 padding rules)',\r\n '1.3.14.3.2.17':\r\n 'Voice encryption using Data Encryption Standard (DES) (168-bit) algorithm coupled with the Encrypt-Decrypt-Encrypt (EDE) multiple encryption mode of operation',\r\n '1.3.14.3.2.26': 'Secure Hash Algorithm, revision 1 (SHA-1)',\r\n '1.3.14.3.2.27':\r\n 'Digital Signature Algorithm (DSA) that uses the Secure Hash Algorithm 1 (SHA1) producing a 320-bit signature',\r\n '1.3.14.3.2.29':\r\n 'Rivest, Shamir and Adleman (RSA) algorithm that uses the Secure Hash Algorithm 1 (SHA1) (obsolete)',\r\n\r\n // Thawte 1.3.101.*\r\n '1.3.101.110': 'Curve25519 (or X25519) algorithm used with the Diffie-Hellman operation',\r\n '1.3.101.111': 'Curve448 (or X448) algorithm used with the Diffie-Hellman operation',\r\n '1.3.101.112': 'Edwards-curve Digital Signature Algorithm (EdDSA) Ed25519',\r\n '1.3.101.113': 'Edwards-curve Digital Signature Algorithm (EdDSA) Ed448',\r\n\r\n // University College London (UCL) 0.9.2342.19200300.*\r\n '0.9.2342.19200300.100.1.1': 'User ID (UID)',\r\n '0.9.2342.19200300.100.1.25': 'Domain component (DC)',\r\n\r\n // Netscape 2.16.840.1.113730.*\r\n '2.16.840.1.113730.1.1': 'Netscape Certificate Type',\r\n '2.16.840.1.113730.2.5': 'Certificate Sequence',\r\n '2.16.840.1.113730.4.1': 'Netscape Server Gated Crypto (SGC)',\r\n },\r\n es: {\r\n loading: 'Loading',\r\n\r\n 'issued-to': 'Emitido para',\r\n 'issued-by': 'Emitido por',\r\n 'issued-on': 'Emitido el',\r\n 'expires-on': 'Caduca el',\r\n 'validity-period': 'Período de validez',\r\n fingerprints: 'Huellas',\r\n 'sha-256-fingerprint': 'Huella digital SHA-256',\r\n 'sha-1-fingerprint': 'Huella digital SHA-1',\r\n title: 'Visor de certificados: {{title}}',\r\n general: 'General',\r\n details: 'Detalles',\r\n 'not-part-of-certificate': '<Not part of certificate>',\r\n 'certificate-hierarchy': 'Jerarquía de certificados',\r\n 'certificate-fields': 'Campos de certificados',\r\n 'field-value': 'Valor de campo',\r\n version: 'Versión',\r\n 'version-format': 'Versión {{version}}',\r\n validity: 'Validez',\r\n 'not-before': 'No antes',\r\n 'not-after': 'No después',\r\n 'serial-number': 'Número de serie',\r\n issuer: 'Emisor',\r\n subject: 'Sujeto',\r\n 'certificate-signature-algorithm': 'Algoritmo de firma de certificado',\r\n 'certificate-signature-value': 'Valor de firma de certificado',\r\n 'subject-public-key-info': 'Información de clave pública del sujeto',\r\n 'subject-public-key-algorithm': 'Algoritmo de clave pública del sujeto',\r\n 'subjects-public-key': 'Clave pública del sujeto',\r\n 'modulus-bits': 'Módulo ({{bits}} bits):',\r\n 'public-exponent': 'Exponente público:',\r\n 'named-curve': 'Curva con nombre: {{curve}}',\r\n extensions: 'Extensiones',\r\n critical: 'Crítico',\r\n 'not-critical': 'No crítico',\r\n signing: 'Firma',\r\n 'certificate-signer': 'Firmante de certificado',\r\n 'hermes-signer': 'Firmante de CRL',\r\n 'is-not-cert-authority': 'No es una entidad de certificación',\r\n 'is-cert-authority': 'Es una entidad de certificación',\r\n 'max-number-intermediate-CAs': 'Número máximo de CA intermedias: {{maxNumber}}',\r\n unlimited: 'ilimitado',\r\n 'key-id': 'Identificador de clave: {{id}}',\r\n\r\n 'general-name-other-name': 'Otro nombre',\r\n 'general-name-rfc822-name': 'Nombre RFC822',\r\n 'general-name-dns-name': 'Nombre de DNS',\r\n 'general-name-x400-address': 'Dirección X400',\r\n 'general-name-directory-name': 'Nombre del directorio',\r\n 'general-name-edi-party-name': 'Nombre de entidad EDI',\r\n 'general-name-uri': 'URI',\r\n 'general-name-ip-address': 'Dirección IP',\r\n 'general-name-registered-id': 'ID registrado',\r\n\r\n 'key-usage-digitalSignature': 'Firma',\r\n 'key-usage-nonRepudiation': 'No repudio',\r\n 'key-usage-keyEncipherment': 'Cifrado de claves',\r\n 'key-usage-dataEncipherment': 'Cifrado de datos',\r\n 'key-usage-keyAgreement': 'Acuerdo de clave',\r\n 'key-usage-keyCertSign': 'Firmante de certificado',\r\n 'key-usage-cRLSign': 'Firmante de CRL',\r\n 'key-usage-encipherOnly': 'Solo cifrar',\r\n 'key-usage-decipherOnly': 'Solo descifrar',\r\n\r\n 'crl-issuer': 'Emisor de CRL:',\r\n reasons: 'Motivos:',\r\n\r\n // X.500 Attributes 2.5.4.* with their relative distinguished names (RDNs)\r\n '2.5.4.3': 'Nombre común (CN)',\r\n '2.5.4.4': 'Apellido (SN)',\r\n '2.5.4.5': 'Número de serie (SERIALNUMBER)',\r\n '2.5.4.6': 'Nombre de país (C)',\r\n '2.5.4.7': 'Nombre de la localidad (L)',\r\n '2.5.4.8': 'Nombre de estado o provincia (ST)',\r\n '2.5.4.9': 'Dirección postal (STREET)',\r\n '2.5.4.10': 'Nombre de organización (O)',\r\n '2.5.4.11': 'Unidad organizativa (OU)',\r\n '2.5.4.12': 'Cargo (T)',\r\n '2.5.4.43': 'Iniciales (I)',\r\n '2.5.4.42': 'Nombre propio (GN)',\r\n '2.5.4.44': 'Calificador de generación',\r\n '2.5.4.46': 'Calificador de nombre distintivo (calificador de DN)',\r\n\r\n // Certificate Extension 2.5.29.*\r\n '2.5.29.9': 'Atributos de directorio de sujeto',\r\n '2.5.29.14': 'Identificador de clave de sujeto de certificado',\r\n '2.5.29.15': 'Uso de clave de certificado',\r\n '2.5.29.16': 'Uso de clave privada',\r\n '2.5.29.17': 'Nombre alternativo del sujeto del certificado',\r\n '2.5.29.18': 'Nombre alternativo del emisor del certificado',\r\n '2.5.29.19': 'Restricciones básicas del certificado',\r\n '2.5.29.20': 'Número de CRL',\r\n '2.5.29.21': 'Código de razón',\r\n '2.5.29.23': 'Retener código de instrucción',\r\n '2.5.29.24': 'Fecha de expiración',\r\n '2.5.29.27': 'Indicador de CRL de delta',\r\n '2.5.29.28': 'Emisión de punto de distribución',\r\n '2.5.29.29': 'Emisor del certificado',\r\n '2.5.29.30': 'Restricciones de nombre',\r\n '2.5.29.31': 'Puntos de distribución de CRL',\r\n '2.5.29.32': 'Directivas del certificado',\r\n '2.5.29.32.0': 'Cualquier directiva',\r\n '2.5.29.33': 'Asignaciones de directivas',\r\n '2.5.29.35': 'Identificador de clave de entidad de certificación',\r\n '2.5.29.36': 'Restricciones de directivas',\r\n '2.5.29.37': 'Uso extendido de la clave',\r\n '2.5.29.37.0': 'Cualquier uso extendido de la clave',\r\n '2.5.29.46': 'CRL más reciente',\r\n '2.5.29.54': 'Inhibir cualquier directiva',\r\n\r\n // PKIX 1.3.6.1.5.5.7.*\r\n '1.3.6.1.5.5.7.1.1': 'Acceso a información de entidad',\r\n '1.3.6.1.5.5.7.1.11': 'Acceso a información de sujeto',\r\n '1.3.6.1.5.5.7.2.1': 'Puntero de declaración de práctica de certificado',\r\n '1.3.6.1.5.5.7.3.1': 'Autenticación del servidor WWW de TLS',\r\n '1.3.6.1.5.5.7.3.2': 'Autenticación de cliente WWW de TLS',\r\n '1.3.6.1.5.5.7.3.3': 'Firma del código ejecutable descargable',\r\n '1.3.6.1.5.5.7.3.4': 'Protección de correo electrónico',\r\n '1.3.6.1.5.5.7.3.5': 'Certificado del sistema final de IPSEC',\r\n '1.3.6.1.5.5.7.3.6': 'Certificado de túnel de IPSEC',\r\n '1.3.6.1.5.5.7.3.7': 'Certificado de usuario de IPSEC',\r\n '1.3.6.1.5.5.7.3.8': 'Marca de tiempo para propósito de clave PKIX',\r\n '1.3.6.1.5.5.7.3.9': 'Firma de respuestas de OCSP',\r\n '1.3.6.1.5.5.7.48.1': 'Protocolo de estado de certificados en línea (OCSP)',\r\n '1.3.6.1.5.5.7.48.1.1': 'Respuesta básica de OCSP',\r\n '1.3.6.1.5.5.7.48.1.2': 'Extensión de Nonce de OCSP',\r\n '1.3.6.1.5.5.7.48.1.3': 'Referencia de lista de revocación de certificados (CRL)',\r\n '1.3.6.1.5.5.7.48.1.4': 'Tipos de respuesta entendidos por un cliente OCSP',\r\n '1.3.6.1.5.5.7.48.1.5': 'Extensión sin comprobación de OCSP',\r\n '1.3.6.1.5.5.7.48.1.6': 'Extensión de límite de archivo de OCSP',\r\n '1.3.6.1.5.5.7.48.1.7': 'Extensión del localizador de servicios OCSP',\r\n '1.3.6.1.5.5.7.48.1.8': 'Indicación del cliente de algoritmos de firma preferidos',\r\n '1.3.6.1.5.5.7.48.2': 'Emisores de entidad de certificación',\r\n '1.3.6.1.5.5.7.48.3': 'Marca de tiempo',\r\n '1.3.6.1.5.5.7.48.5': 'Repositorio de entidad de certificación (CA)',\r\n\r\n // -- NIST --\r\n // AES 2.16.840.1.101.3.4.1.*\r\n '2.16.840.1.101.3.4.1': 'Estándar de cifrado avanzado (AES)',\r\n '2.16.840.1.101.3.4.1.1': 'AES-128 ECB',\r\n '2.16.840.1.101.3.4.1.2': 'AES-128 CBC',\r\n '2.16.840.1.101.3.4.1.3': 'AES-128 OFB',\r\n '2.16.840.1.101.3.4.1.4': 'AES-128 CFB',\r\n '2.16.840.1.101.3.4.1.5': 'AES-128 KW',\r\n '2.16.840.1.101.3.4.1.6': 'AES-128 GCM',\r\n '2.16.840.1.101.3.4.1.8': 'AES-128 KWP',\r\n '2.16.840.1.101.3.4.1.21': 'AES-192 ECB',\r\n '2.16.840.1.101.3.4.1.22': 'AES-192 CBC',\r\n '2.16.840.1.101.3.4.1.23': 'AES-192 OFB',\r\n '2.16.840.1.101.3.4.1.24': 'AES-192 CFB',\r\n '2.16.840.1.101.3.4.1.25': 'AES-192 KW',\r\n '2.16.840.1.101.3.4.1.26': 'AES-192 GCM',\r\n '2.16.840.1.101.3.4.1.28': 'AES-192 KWP',\r\n '2.16.840.1.101.3.4.1.41': 'AES-256 ECB',\r\n '2.16.840.1.101.3.4.1.42': 'AES-256 CBC',\r\n '2.16.840.1.101.3.4.1.43': 'AES-256 OFB',\r\n '2.16.840.1.101.3.4.1.44': 'AES-256 CFB',\r\n '2.16.840.1.101.3.4.1.45': 'AES-256 KW',\r\n '2.16.840.1.101.3.4.1.46': 'AES-256 GCM',\r\n '2.16.840.1.101.3.4.1.48': 'AES-256 KWP',\r\n\r\n // Secure Hash Algorithms 2.16.840.1.101.3.4.2.*\r\n '2.16.840.1.101.3.4.2': 'Algoritmos hash seguros',\r\n '2.16.840.1.101.3.4.2.1': 'SHA-256',\r\n '2.16.840.1.101.3.4.2.2': 'SHA-384',\r\n '2.16.840.1.101.3.4.2.3': 'SHA-512',\r\n '2.16.840.1.101.3.4.2.4': 'SHA-224',\r\n '2.16.840.1.101.3.4.2.5': 'SHA-512/224',\r\n '2.16.840.1.101.3.4.2.6': 'SHA-512/256',\r\n '2.16.840.1.101.3.4.2.7': 'SHA3-224',\r\n '2.16.840.1.101.3.4.2.8': 'SHA3-256',\r\n '2.16.840.1.101.3.4.2.9': 'SHA3-384',\r\n '2.16.840.1.101.3.4.2.10': 'SHA3-512',\r\n '2.16.840.1.101.3.4.2.11': 'SHAKE-128',\r\n '2.16.840.1.101.3.4.2.12': 'SHAKE-256',\r\n '2.16.840.1.101.3.4.2.13': 'HMAC-SHA3-224',\r\n '2.16.840.1.101.3.4.2.14': 'HMAC-SHA3-256',\r\n '2.16.840.1.101.3.4.2.15': 'HMAC-SHA3-384',\r\n '2.16.840.1.101.3.4.2.16': 'HMAC-SHA3-512',\r\n '2.16.840.1.101.3.4.2.17': 'SHAKE-128 con el parámetro ShakeOutputLen',\r\n '2.16.840.1.101.3.4.2.18': 'SHAKE-256 con el parámetro ShakeOutputLen',\r\n\r\n // Signature Algorithms 2.16.840.1.101.3.4.3.*\r\n '2.16.840.1.101.3.4.3': 'Algoritmos de firma',\r\n '2.16.840.1.101.3.4.3.1': 'SHA-224 con DSA',\r\n '2.16.840.1.101.3.4.3.2': 'SHA-256 con DSA',\r\n '2.16.840.1.101.3.4.3.3': 'SHA-384 con DSA',\r\n '2.16.840.1.101.3.4.3.4': 'SHA-512 con DSA',\r\n '2.16.840.1.101.3.4.3.5': 'SHA3-224 con DSA',\r\n '2.16.840.1.101.3.4.3.6': 'SHA3-256 con DSA',\r\n '2.16.840.1.101.3.4.3.7': 'SHA3-384 con DSA',\r\n '2.16.840.1.101.3.4.3.8': 'SHA3-512 con DSA',\r\n '2.16.840.1.101.3.4.3.9': 'SHA3-224 con EHERMESA',\r\n '2.16.840.1.101.3.4.3.10': 'SHA3-256 con EHERMESA',\r\n '2.16.840.1.101.3.4.3.11': 'SHA3-384 con EHERMESA',\r\n '2.16.840.1.101.3.4.3.12': 'SHA3-512 con EHERMESA',\r\n '2.16.840.1.101.3.4.3.13': 'SHA3-224 con RSA',\r\n '2.16.840.1.101.3.4.3.14': 'SHA3-256 con RSA',\r\n '2.16.840.1.101.3.4.3.15': 'SHA3-384 con RSA',\r\n '2.16.840.1.101.3.4.3.16': 'SHA3-512 con RSA',\r\n\r\n // RSA Security\r\n // PKCS1 1.2.840.113549.1.1.*\r\n '1.2.840.113549.1.1': 'Estándares de criptografía de clave pública (PKCS) #1',\r\n '1.2.840.113549.1.1.1': 'Esquema de cifrado RSAES-PKCS1-v1_5 en PKCS #1',\r\n '1.2.840.113549.1.1.2': 'MD2 con cifrado RSA en PKCS #1',\r\n '1.2.840.113549.1.1.4': 'MD5 con cifrado RSA en PKCS #1',\r\n '1.2.840.113549.1.1.5': 'SHA1 con cifrado RSA en PKCS #1',\r\n '1.2.840.113549.1.1.7': 'Conjunto de cifrado de RSA OAEP en PKCS #1',\r\n '1.2.840.113549.1.1.8': 'RSA con MGF1 en PKCS #1',\r\n '1.2.840.113549.1.1.9': 'RSA PSpecified en PKCS #1',\r\n '1.2.840.113549.1.1.10': 'RSASSA-PSS en PKCS #1',\r\n '1.2.840.113549.1.1.11': 'SHA-256 con cifrado RSA en PKCS #1',\r\n '1.2.840.113549.1.1.12': 'SHA-384 con cifrado RSA en PKCS #1',\r\n '1.2.840.113549.1.1.13': 'SHA-512 con cifrado RSA en PKCS #1',\r\n '1.2.840.113549.1.1.14': 'SHA-224 con cifrado RSA en PKCS #1',\r\n '1.2.840.113549.1.1.15': 'SHA-512/224 con cifrado RSA en PKCS #1',\r\n '1.2.840.113549.1.1.16': 'SHA-512/256 con cifrado RSA en PKCS #1',\r\n\r\n // PKCS3 1.2.840.113549.1.3.*\r\n '1.2.840.113549.1.3':\r\n 'Estándares de criptografía de clave pública (PKCS) #3: estándar Diffie-Hellman Key-Agreement',\r\n '1.2.840.113549.1.3.1': 'Acuerdo de clave de Diffie-Hellman (DH) en PKCS #3',\r\n\r\n // PKCS5 1.2.840.113549.1.5.*\r\n '1.2.840.113549.1.5': 'Estándares de criptografía de clave pública (PKCS) #5 en PKCS #5',\r\n '1.2.840.113549.1.5.3': 'PBE con MD5 y DES en PKCS #5',\r\n '1.2.840.113549.1.5.6': 'PBE con MD5 y RC2 en PKCS #5',\r\n '1.2.840.113549.1.5.10': 'PBE con SHA1 y DES en PKCS #5',\r\n '1.2.840.113549.1.5.11': 'PBE con SHA1 y RC2 en PKCS #5',\r\n '1.2.840.113549.1.5.12': 'Función de derivación de clave basada en contraseña 2 (PBKDF2) en PKCS #5',\r\n '1.2.840.113549.1.5.13': 'Esquema de cifrado basado en contraseña 2 (PBES2) en PKCS #5',\r\n\r\n // PKCS7 1.2.840.113549.1.7.*\r\n '1.2.840.113549.1.7': 'Estándares de criptografía de clave pública (PKCS) #7',\r\n '1.2.840.113549.1.7.1': 'Datos en PKCS #7',\r\n '1.2.840.113549.1.7.2': 'Datos firmados en PKCS #7',\r\n '1.2.840.113549.1.7.3': 'Datos encapsulados en PKCS #7',\r\n '1.2.840.113549.1.7.4': 'Datos firmados y encapsulados en PKCS #7',\r\n '1.2.840.113549.1.7.5': 'Datos resumidos en PKCS #7',\r\n '1.2.840.113549.1.7.6': 'Datos cifrados en PKCS #7',\r\n\r\n // PKCS9 1.2.840.113549.1.9.*\r\n '1.2.840.113549.1.9': 'Estándares de criptografía de clave pública (PKCS) #9',\r\n '1.2.840.113549.1.9.1': 'Dirección de correo electrónico en PKCS #9',\r\n '1.2.840.113549.1.9.2': 'Nombre no estructurado en PKCS #9',\r\n '1.2.840.113549.1.9.3': 'Tipo de contenido en PKCS #9',\r\n '1.2.840.113549.1.9.4': 'Resumen de mensaje en PKCS #9',\r\n '1.2.840.113549.1.9.5': 'Hora de firma en PKCS #9',\r\n '1.2.840.113549.1.9.6': 'Contrafirma en PKCS #9',\r\n '1.2.840.113549.1.9.7': 'Contraseña de desafío en PKCS #9',\r\n '1.2.840.113549.1.9.8': 'Dirección no estructurada en PKCS #9',\r\n '1.2.840.113549.1.9.9': 'Atributos de certificado extendidos en PKCS #9',\r\n '1.2.840.113549.1.9.10': 'Emisor y número de serie en PKCS #9',\r\n '1.2.840.113549.1.9.14': 'Solicitud de extensión en PKCS #9',\r\n '1.2.840.113549.1.9.15': 'Capacidad de SMIME en PKCS #9',\r\n '1.2.840.113549.1.9.16.1.4': 'Información del token de marca de tiempo en PKCS #9',\r\n '1.2.840.113549.1.9.16.2.12': 'Certificado de firma en PKCS #9',\r\n '1.2.840.113549.1.9.16.2.14': 'Token de marca de tiempo de firma en PKCS #9',\r\n '1.2.840.113549.1.9.16.3.18':\r\n 'Algoritmo de cifrado autenticado con datos asociados (AEAD) AEAD_CHACHA20_POLY1305 en PKCS #9',\r\n '1.2.840.113549.1.9.20': 'Nombre descriptivo en PKCS #9',\r\n '1.2.840.113549.1.9.21': 'Identificador de clave local en PKCS #9',\r\n '1.2.840.113549.1.9.22.1': 'Certificado x509 (para PKCS #12) en PKCS #9',\r\n '1.2.840.113549.1.9.52': 'Protección de algoritmo de CMS en PKCS #9',\r\n\r\n // PKCS12 1.2.840.113549.1.12.*\r\n '1.2.840.113549.1.12': 'Estándares de criptografía de clave pública (PKCS) #12',\r\n '1.2.840.113549.1.12.1.1': 'SHA1-PBE con RC4-128 en PKCS #12',\r\n '1.2.840.113549.1.12.1.2': 'SHA1-PBE con RC4-40 en PKCS #12',\r\n '1.2.840.113549.1.12.1.3': 'SHA1-PBE con DES-EDE en PKCS #12',\r\n '1.2.840.113549.1.12.1.5': 'SHA1-PBE con RC2-128 en PKCS #12',\r\n '1.2.840.113549.1.12.1.6': 'SHA1-PBE con RC2-40 en PKCS #12',\r\n '1.2.840.113549.1.12.10.1.1': 'Contenedor de clave encubierta PKCS #8 en PKCS #12',\r\n '1.2.840.113549.1.12.10.1.3': 'Contenedor de certificado en PKCS #12',\r\n '1.2.840.113549.1.12.10.1.4': 'Contenedor de lista de revocación de certificados (CRL) en PKCS #12',\r\n '1.2.840.113549.1.12.10.1.5': 'Contenedor secreto en PKCS #12',\r\n '1.2.840.113549.1.12.10.1.6': 'Contenedor de contenido seguro en PKCS #12',\r\n\r\n // Digest Algorithms 1.2.840.113549.2.*\r\n '1.2.840.113549.2': 'Algoritmos de resumen',\r\n '1.2.840.113549.2.2': 'Resumen del mensaje #2 (MD2)',\r\n '1.2.840.113549.2.5': 'Resumen del mensaje #5 (MD5)',\r\n '1.2.840.113549.2.7': 'HMAC-SHA-1',\r\n '1.2.840.113549.2.8': 'HMAC-SHA-224',\r\n '1.2.840.113549.2.9': 'HMAC-SHA-256',\r\n '1.2.840.113549.2.10': 'HMAC-SHA-384',\r\n '1.2.840.113549.2.11': 'HMAC-SHA-512',\r\n '1.2.840.113549.2.12': 'HMAC-SHA-512/224',\r\n '1.2.840.113549.2.13': 'HMAC-SHA-512/256',\r\n\r\n // Encryption Algorithms 1.2.840.113549.3.*\r\n '1.2.840.113549.3': 'Algoritmos de cifrado',\r\n '1.2.840.113549.3.2': 'RC2-CBC',\r\n '1.2.840.113549.3.4': 'RC4-CBC',\r\n '1.2.840.113549.3.7': 'DES-EDE3-CBC',\r\n '1.2.840.113549.3.9': 'RC5-CBC',\r\n\r\n // -- ANSI --\r\n // X9 1.2.840.10040.4.*\r\n '1.2.840.10040.4.1': 'Clave pública de sujeto con DSA',\r\n '1.2.840.10040.4.3': 'DSA con SHA-1',\r\n\r\n // X9.62 1.2.840.10045.*\r\n '1.2.840.10045.2.1': 'Cifrado de clave pública con curvas elípticas',\r\n\r\n '1.2.840.10045.3.0.5': 'TNB 191 V1',\r\n '1.2.840.10045.3.0.6': 'TNB 191 V2',\r\n '1.2.840.10045.3.0.7': 'TNB 191 V3',\r\n '1.2.840.10045.3.0.11': 'TNB 239 V1',\r\n '1.2.840.10045.3.0.12': 'TNB 239 V2',\r\n '1.2.840.10045.3.0.13': 'TNB 239 V3',\r\n '1.2.840.10045.3.0.18': 'TNB 359 V1',\r\n '1.2.840.10045.3.0.20': 'TNB 431 R1',\r\n '1.2.840.10045.3.1.1':\r\n 'Dominio de curva elíptica \"secp192r1\" incluido en el dominio de curvas elípticas recomendadas de \"SEC 2\"',\r\n '1.2.840.10045.3.1.2': 'Primo 192 V2',\r\n '1.2.840.10045.3.1.3': 'Primo 192 V3',\r\n '1.2.840.10045.3.1.4': 'Primo 239 V1',\r\n '1.2.840.10045.3.1.5': 'Primo 239 V2',\r\n '1.2.840.10045.3.1.6': 'Primo 239 V3',\r\n '1.2.840.10045.3.1.7': 'NIST P-256',\r\n '1.2.840.10045.4.1': 'ANSI X9.62 EHERMESA con SHA-1',\r\n '1.2.840.10045.4.3.1': 'Valores de firma EHERMESA con SHA-224',\r\n '1.2.840.10045.4.3.2': 'DSA con SHA-256',\r\n '1.2.840.10045.4.3.3': 'DSA con SHA-384',\r\n '1.2.840.10045.4.3.4': 'DSA con SHA-512',\r\n '1.2.840.10045.4.3': 'ANSI X9.62 EHERMESA con SHA2',\r\n\r\n // X9.42 1.2.840.10046.2.*\r\n '1.2.840.10046.2.1': 'Algoritmo de acuerdo de claves Diffie-Hellman (DH) efímero-estático',\r\n\r\n // Teletrust 1.3.36.*\r\n '1.3.36.3.3.2.8.1.1.1': 'Conjunto de parámetros de dominio P160r1 de Brainpool',\r\n '1.3.36.3.3.2.8.1.1.3': 'Conjunto de parámetros de dominio P192r1 de Brainpool',\r\n '1.3.36.3.3.2.8.1.1.5': 'Conjunto de parámetros de dominio P224r1 de Brainpool',\r\n '1.3.36.3.3.2.8.1.1.7': 'Conjunto de parámetros de dominio P256r1 de Brainpool',\r\n '1.3.36.3.3.2.8.1.1.9': 'Conjunto de parámetros de dominio P320r1 de Brainpool',\r\n '1.3.36.3.3.2.8.1.1.11': 'Conjunto de parámetros de dominio P384r1 de Brainpool',\r\n '1.3.36.3.3.2.8.1.1.13': 'Conjunto de parámetros de dominio P512r1 de Brainpool',\r\n\r\n // Certicom 1.3.132.*\r\n '1.3.132.0.1': 'Dominio de curva elíptica \"sect163k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.2': 'Dominio de curva elíptica \"sect163r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.3': 'Dominio de curva elíptica \"sect239k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.4': 'Dominio de curva elíptica \"sect113r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.5': 'Dominio de curva elíptica \"sect113r2\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.6': 'Dominio de curva elíptica \"secp112r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.7': 'Dominio de curva elíptica \"secp112r2\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.8': 'Dominio de curva elíptica \"secp160r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.9': 'Dominio de curva elíptica \"secp160k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.10': 'Dominio de curva elíptica \"ansip256k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.15': 'Dominio de curva elíptica \"sect163r2\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.16': 'Dominio de curva elíptica \"sect283k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.17': 'Dominio de curva elíptica \"sect283r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.22': 'Dominio de curva elíptica \"sect131r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.23': 'Dominio de curva elíptica \"sect131r2\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.24': 'Dominio de curva elíptica \"sect193r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.25': 'Dominio de curva elíptica \"sect193r2\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.26': 'Dominio de curva elíptica \"sect233k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.27': 'Dominio de curva elíptica \"sect233r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.28': 'Dominio de curva elíptica \"secp128r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.29': 'Dominio de curva elíptica \"secp128r2\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.30': 'Dominio de curva elíptica \"secp160r2\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.31': 'Dominio de curva elíptica \"secp192k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.32': 'Dominio de curva elíptica \"secp224k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.33': 'Dominio de curva elíptica \"secp224r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.34': 'Curva elíptica de 384 bits del National Institute of Standards and Technology (NIST)',\r\n '1.3.132.0.35': 'Curva elíptica de 512 bits del National Institute of Standards and Technology (NIST)',\r\n '1.3.132.0.36': 'Dominio de curva elíptica \"sect409k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.37': 'Dominio de curva elíptica \"sect409r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.38': 'Dominio de curva elíptica \"sect571k1\" recomendada por \"SEC 2\"',\r\n '1.3.132.0.39': 'Dominio de curva elíptica \"sect571r1\" recomendada por \"SEC 2\"',\r\n '1.3.132.1.12': 'Algoritmo de curva elíptica Diffie-Hellman (ECDH)',\r\n\r\n // OIW secsig 1.3.14.3.*\r\n '1.3.14.3.2.7':\r\n 'Estándar de cifrado de datos (DES) de clave única en modo de cadena de bloques de cifrado (CBC) con operación de relleno',\r\n '1.3.14.3.2.12': 'Algoritmo de firma digital (DSA)',\r\n '1.3.14.3.2.13':\r\n 'Algoritmo de firma digital (DSA) de seguridad que utiliza el algoritmo de hash seguro (SHA) para cifrar el contenido del mensaje',\r\n '1.3.14.3.2.15':\r\n 'Algoritmo RSA (Rivest, Shamir y Adleman) junto con el algoritmo de hash seguro (SHA) (método inusual que usa reglas de relleno ISO/IEC 9796-2)',\r\n '1.3.14.3.2.17':\r\n 'Cifrado de voz mediante el algoritmo estándar de cifrado de datos (DES) (168 bits) junto con el modo de operación de cifrado múltiple Encrypt-Encrypt-Encrypt (EDE)',\r\n '1.3.14.3.2.26': 'Algoritmo hash seguro, revisión 1 (SHA-1)',\r\n '1.3.14.3.2.27':\r\n 'Algoritmo de firma digital (DSA) que utiliza el algoritmo de hash seguro 1 (SHA1) que produce una firma de 320 bits',\r\n '1.3.14.3.2.29':\r\n 'Algoritmo de RSA (Rivest, Shamir y Adleman) que utiliza el algoritmo de hash seguro 1 (SHA1) (obsoleto)',\r\n\r\n // Thawte 1.3.101.*\r\n '1.3.101.110': 'Algoritmo Curve25519 (o X25519) utilizado con la operación Diffie-Hellman',\r\n '1.3.101.111': 'Algoritmo Curve448 (o X448) utilizado con la operación Diffie-Hellman',\r\n '1.3.101.112': 'Algoritmo de firma digital de curva Edwards (EdDSA) Ed25519',\r\n '1.3.101.113': 'Algoritmo de firma digital de curva Edwards (EdDSA) Ed448',\r\n\r\n // University College London (UCL) 0.9.2342.19200300.*\r\n '0.9.2342.19200300.100.1.1': 'Identificador de usuario (UID)',\r\n '0.9.2342.19200300.100.1.25': 'Componente de dominio (DC)',\r\n\r\n // Netscape 2.16.840.1.113730.*\r\n '2.16.840.1.113730.1.1': 'Tipo de certificado de Netscape',\r\n '2.16.840.1.113730.2.5': 'Secuencia de certificado',\r\n '2.16.840.1.113730.4.1': 'Cifrado con puerta de seguridad de servidor (SGC) de Netscape',\r\n },\r\n fr: {\r\n loading: 'Loading',\r\n\r\n 'issued-to': 'Émis pour',\r\n 'issued-by': 'Émis par',\r\n 'issued-on': 'Émis le',\r\n 'expires-on': 'Expire le',\r\n 'validity-period': 'Période de validit',\r\n fingerprints: 'Empreintes digitales',\r\n 'sha-256-fingerprint': 'Empreinte digitale SHA-256',\r\n 'sha-1-fingerprint': 'Empreinte digitale SHA-1',\r\n title: 'Visionneuse de certificat : {{title}}',\r\n general: 'Général',\r\n details: 'Détails',\r\n 'not-part-of-certificate': '<Not part of certificate>',\r\n 'certificate-hierarchy': 'Hiérarchie des certificats',\r\n 'certificate-fields': 'Champs de certificat',\r\n 'field-value': 'Valeur du champ',\r\n version: 'Version',\r\n 'version-format': 'Version {{version}}',\r\n validity: 'Validité',\r\n 'not-before': 'Pas avant',\r\n 'not-after': 'Pas après',\r\n 'serial-number': 'Numéro de série',\r\n issuer: 'Émetteur',\r\n subject: 'Objet',\r\n 'certificate-signature-algorithm': 'Algorithme de signature de certificat',\r\n 'certificate-signature-value': 'Valeur de signature de certificat',\r\n 'subject-public-key-info': \"Infos de la clé publique de l'objet\",\r\n 'subject-public-key-algorithm': \"Algorithme de la clé publique de l'objet\",\r\n 'subjects-public-key': \"Clé publique de l'objet\",\r\n 'modulus-bits': 'Module ({{bits}} bits) :',\r\n 'public-exponent': 'Exposant public :',\r\n 'named-curve': 'Courbe nommée : {{curve}}',\r\n extensions: 'Extensions',\r\n critical: 'Critique',\r\n 'not-critical': 'Non critique',\r\n signing: 'Signature',\r\n 'certificate-signer': 'Signataire du certificat',\r\n 'hermes-signer': 'Signataire de la CRL',\r\n 'is-not-cert-authority': \"N'est pas une autorité de certification\",\r\n 'is-cert-authority': 'Est une autorité de certification',\r\n 'max-number-intermediate-CAs': 'Nombre maximal de CA intermédiaires : {{maxNumber}}',\r\n unlimited: 'illimité',\r\n 'key-id': 'ID de clé : {{id}}',\r\n\r\n 'general-name-other-name': 'Autre nom',\r\n 'general-name-rfc822-name': 'Nom de RFC822',\r\n 'general-name-dns-name': 'Nom DNS',\r\n 'general-name-x400-address': 'Adresse X400',\r\n 'general-name-directory-name': \"Nom de l'annuaire\",\r\n 'general-name-edi-party-name': 'Nom de partie EDI',\r\n 'general-name-uri': 'URI',\r\n 'general-name-ip-address': 'Adresse IP',\r\n 'general-name-registered-id': 'ID enregistré',\r\n\r\n 'key-usage-digitalSignature': 'Signature',\r\n 'key-usage-nonRepudiation': 'Non-répudiation',\r\n 'key-usage-keyEncipherment': 'Chiffrement de clé',\r\n 'key-usage-dataEncipherment': 'Chiffrement des données',\r\n 'key-usage-keyAgreement': 'Accord de clé',\r\n 'key-usage-keyCertSign': 'Signataire du certificat',\r\n 'key-usage-cRLSign': 'Signataire de la CRL',\r\n 'key-usage-encipherOnly': 'Chiffrement uniquement',\r\n 'key-usage-decipherOnly': 'Déchiffrement uniquement',\r\n\r\n 'crl-issuer': 'Émetteur de la CRL :',\r\n reasons: 'Motifs :',\r\n\r\n // X.500 Attributes 2.5.4.* with their relative distinguished names (RDNs)\r\n '2.5.4.3': 'Nom commun (CN)',\r\n '2.5.4.4': 'Nom (SN)',\r\n '2.5.4.5': 'Numéro de série (SERIALNUMBER)',\r\n '2.5.4.6': 'Nom de pays (C)',\r\n '2.5.4.7': 'Nom de la localité (L)',\r\n '2.5.4.8': \"Nom de l'état ou de la province (ST)\",\r\n '2.5.4.9': 'Adresse (STREET)',\r\n '2.5.4.10': \"Nom de l'organisation (O)\",\r\n '2.5.4.11': \"Unité d'organisation (OU)\",\r\n '2.5.4.12': 'Titre (T)',\r\n '2.5.4.43': 'Initiales (I)',\r\n '2.5.4.42': 'Nom donné (GN)',\r\n '2.5.4.44': 'Qualificateur de génération',\r\n '2.5.4.46': 'Qualificateur de nom unique (qualificateur de DN)',\r\n\r\n // Certificate Extension 2.5.29.*\r\n '2.5.29.9': \"Attributs de l'annuaire de sujet\",\r\n '2.5.29.14': 'ID de la clé de sujet de certificat',\r\n '2.5.29.15': 'Utilisation de la clé de certificat',\r\n '2.5.29.16': 'Utilisation de la clé privée',\r\n '2.5.29.17': 'Autre nom du sujet du certificat',\r\n '2.5.29.18': \"Autre nom de l'abonnement du certificat\",\r\n '2.5.29.19': 'Contraintes de base du certificat',\r\n '2.5.29.20': 'Numéro de CRL',\r\n '2.5.29.21': \"Code d'explication de l'erreur\",\r\n '2.5.29.23': \"Bloquer le code d'instruction\",\r\n '2.5.29.24': \"Date d'invalidité\",\r\n '2.5.29.27': 'Indicateur de CRL delta',\r\n '2.5.29.28': 'Émission du point de distribution',\r\n '2.5.29.29': 'Émetteur du certificat',\r\n '2.5.29.30': 'Contraintes de nom',\r\n '2.5.29.31': 'Points de distribution CRL',\r\n '2.5.29.32': 'Stratégies de certificat',\r\n '2.5.29.32.0': \"N'importe quelle stratégie\",\r\n '2.5.29.33': 'Mappages de stratégies',\r\n '2.5.29.35': \"ID de la clé de l'autorité de certificat\",\r\n '2.5.29.36': 'Contraintes de stratégie',\r\n '2.5.29.37': 'Utilisation prolongée de la clé',\r\n '2.5.29.37.0': 'Utilisation de la clé étendue',\r\n '2.5.29.46': 'CRL la plus récente',\r\n '2.5.29.54': 'Interdire toute stratégie',\r\n\r\n // PKIX 1.3.6.1.5.5.7.*\r\n '1.3.6.1.5.5.7.1.1': \"Accès aux informations de l'autorité\",\r\n '1.3.6.1.5.5.7.1.11': 'Accès aux informations sur le sujet',\r\n '1.3.6.1.5.5.7.2.1': 'Pointeur de relevé pratique de certificat',\r\n '1.3.6.1.5.5.7.3.1': 'Authentification du serveur WWW TLS',\r\n '1.3.6.1.5.5.7.3.2': 'Authentification client WWW TLS',\r\n '1.3.6.1.5.5.7.3.3': 'Signature du code exécutable téléchargeable',\r\n '1.3.6.1.5.5.7.3.4': 'Protection des e-mails',\r\n '1.3.6.1.5.5.7.3.5': 'Certificat de système de fin IPsec',\r\n '1.3.6.1.5.5.7.3.6': 'Certificat de tunnel IPSEC',\r\n '1.3.6.1.5.5.7.3.7': \"Certificat d'utilisateur IPSEC\",\r\n '1.3.6.1.5.5.7.3.8': \"Horodatage de l'objectif de clé PKIX\",\r\n '1.3.6.1.5.5.7.3.9': 'Signature des réponses OCSP',\r\n '1.3.6.1.5.5.7.48.1': 'Online Certificate Status Protocol (OCSP)',\r\n '1.3.6.1.5.5.7.48.1.1': 'Réponse de base OCSP',\r\n '1.3.6.1.5.5.7.48.1.2': 'Extension de nonce OCSP',\r\n '1.3.6.1.5.5.7.48.1.3': 'Référence de la liste de révocation des certificats (CRL)',\r\n '1.3.6.1.5.5.7.48.1.4': 'Types de réponse compris par un client OCSP',\r\n '1.3.6.1.5.5.7.48.1.5': 'Extension sans vérification OCSP',\r\n '1.3.6.1.5.5.7.48.1.6': \"Extension de seuil d'archive OCSP\",\r\n '1.3.6.1.5.5.7.48.1.7': 'Extension de localisateur de service OCSP',\r\n '1.3.6.1.5.5.7.48.1.8': 'Indication du client des algorithmes de signature préférés',\r\n '1.3.6.1.5.5.7.48.2': \"Émetteurs de l'autorité de certification\",\r\n '1.3.6.1.5.5.7.48.3': 'Horodatage',\r\n '1.3.6.1.5.5.7.48.5': \"Référentiel d'autorité de certification (CA)\",\r\n\r\n // -- NIST --\r\n // AES 2.16.840.1.101.3.4.1.*\r\n '2.16.840.1.101.3.4.1': 'Advanced Encryption Standard (AES)',\r\n '2.16.840.1.101.3.4.1.1': 'AES-128 ECB',\r\n '2.16.840.1.101.3.4.1.2': 'AES-128 CBC',\r\n '2.16.840.1.101.3.4.1.3': 'AES-128 OFB',\r\n '2.16.840.1.101.3.4.1.4': 'AES-128 CFB',\r\n '2.16.840.1.101.3.4.1.5': 'AES-128 KW',\r\n '2.16.840.1.101.3.4.1.6': 'AES-128 GCM',\r\n '2.16.840.1.101.3.4.1.8': 'AES-128 KWP',\r\n '2.16.840.1.101.3.4.1.21': 'AES-192 ECB',\r\n '2.16.840.1.101.3.4.1.22': 'AES-192 CBC',\r\n '2.16.840.1.101.3.4.1.23': 'AES-192 OFB',\r\n '2.16.840.1.101.3.4.1.24': 'AES-192 CFB',\r\n '2.16.840.1.101.3.4.1.25': 'AES-192 KW',\r\n '2.16.840.1.101.3.4.1.26': 'AES-192 GCM',\r\n '2.16.840.1.101.3.4.1.28': 'AES-192 KWP',\r\n '2.16.840.1.101.3.4.1.41': 'AES-256 ECB',\r\n '2.16.840.1.101.3.4.1.42': 'AES-256 CBC',\r\n '2.16.840.1.101.3.4.1.43': 'AES-256 OFB',\r\n '2.16.840.1.101.3.4.1.44': 'AES-256 CFB',\r\n '2.16.840.1.101.3.4.1.45': 'AES-256 KW',\r\n '2.16.840.1.101.3.4.1.46': 'AES-256 GCM',\r\n '2.16.840.1.101.3.4.1.48': 'AES-256 KWP',\r\n\r\n // Secure Hash Algorithms 2.16.840.1.101.3.4.2.*\r\n '2.16.840.1.101.3.4.2': 'Algorithmes de hachage sécurisés',\r\n '2.16.840.1.101.3.4.2.1': 'SHA-256',\r\n '2.16.840.1.101.3.4.2.2': 'SHA-384',\r\n '2.16.840.1.101.3.4.2.3': 'SHA-512',\r\n '2.16.840.1.101.3.4.2.4': 'SHA-224',\r\n '2.16.840.1.101.3.4.2.5': 'SHA-512/224',\r\n '2.16.840.1.101.3.4.2.6': 'SHA-512/256',\r\n '2.16.840.1.101.3.4.2.7': 'SHA3-224',\r\n '2.16.840.1.101.3.4.2.8': 'SHA3-256',\r\n '2.16.840.1.101.3.4.2.9': 'SHA3-384',\r\n '2.16.840.1.101.3.4.2.10': 'SHA3-512',\r\n '2.16.840.1.101.3.4.2.11': 'SHAKE-128',\r\n '2.16.840.1.101.3.4.2.12': 'SHAKE-256',\r\n '2.16.840.1.101.3.4.2.13': 'HMAC-SHA3-224',\r\n '2.16.840.1.101.3.4.2.14': 'HMAC-SHA3-256',\r\n '2.16.840.1.101.3.4.2.15': 'HMAC-SHA3-384',\r\n '2.16.840.1.101.3.4.2.16': 'HMAC-SHA3-512',\r\n '2.16.840.1.101.3.4.2.17': 'SHAKE-128 avec le paramètre ShakeOutputLen',\r\n '2.16.840.1.101.3.4.2.18': 'SHAKE-256 avec le paramètre ShakeOutputLen',\r\n\r\n // Signature Algorithms 2.16.840.1.101.3.4.3.*\r\n '2.16.840.1.101.3.4.3': 'Algorithmes de signature',\r\n '2.16.840.1.101.3.4.3.1': 'SHA-224 avec DSA',\r\n '2.16.840.1.101.3.4.3.2': 'SHA-256 avec DSA',\r\n '2.16.840.1.101.3.4.3.3': 'SHA-384 avec DSA',\r\n '2.16.840.1.101.3.4.3.4': 'SHA-512 avec DSA',\r\n '2.16.840.1.101.3.4.3.5': 'SHA3-224 avec DSA',\r\n '2.16.840.1.101.3.4.3.6': 'SHA3-256 avec DSA',\r\n '2.16.840.1.101.3.4.3.7': 'SHA3-384 avec DSA',\r\n '2.16.840.1.101.3.4.3.8': 'SHA3-512 avec DSA',\r\n '2.16.840.1.101.3.4.3.9': 'SHA3-224 avec EHERMESA',\r\n '2.16.840.1.101.3.4.3.10': 'SHA3-256 avec EHERMESA',\r\n '2.16.840.1.101.3.4.3.11': 'SHA3-384 avec EHERMESA',\r\n '2.16.840.1.101.3.4.3.12': 'SHA3-512 avec EHERMESA',\r\n '2.16.840.1.101.3.4.3.13': 'SHA3-224 avec RSA',\r\n '2.16.840.1.101.3.4.3.14': 'SHA3-256 avec RSA',\r\n '2.16.840.1.101.3.4.3.15': 'SHA3-384 avec RSA',\r\n '2.16.840.1.101.3.4.3.16': 'SHA3-512 avec RSA',\r\n\r\n // RSA Security\r\n // PKCS1 1.2.840.113549.1.1.*\r\n '1.2.840.113549.1.1': 'Public-Key Cryptography Standards (PKCS) #1',\r\n '1.2.840.113549.1.1.1': 'PKCS #1 - Schéma de chiffrement RSAES-PKCS1-v1_5',\r\n '1.2.840.113549.1.1.2': 'PKCS #1 - MD2 avec chiffrement RSA',\r\n '1.2.840.113549.1.1.4': 'PKCS #1 - MD5 avec chiffrement RSA',\r\n '1.2.840.113549.1.1.5': 'PKCS #1 - SHA1 avec chiffrement RSA',\r\n '1.2.840.113549.1.1.7': 'PKCS #1 - Ensemble de chiffrement RSA OAEP',\r\n '1.2.840.113549.1.1.8': 'RSA PKCS #1 avec MGF1',\r\n '1.2.840.113549.1.1.9': 'PKCS #1 - RSA PSpecified',\r\n '1.2.840.113549.1.1.10': 'PKCS #1 RSASSA-PSS',\r\n '1.2.840.113549.1.1.11': 'PKCS #1 - SHA-256 avec chiffrement RSA',\r\n '1.2.840.113549.1.1.12': 'PKCS #1 - SHA-384 avec chiffrement RSA',\r\n '1.2.840.113549.1.1.13': 'PKCS #1 - SHA-512 avec chiffrement RSA',\r\n '1.2.840.113549.1.1.14': 'PKCS #1 - SHA-224 avec chiffrement RSA',\r\n '1.2.840.113549.1.1.15': 'PKCS #1 - SHA-512/224 avec chiffrement RSA',\r\n '1.2.840.113549.1.1.16': 'PKCS #1 - SHA-512/256 avec chiffrement RSA',\r\n\r\n // PKCS3 1.2.840.113549.1.3.*\r\n '1.2.840.113549.1.3': \"Public-Key Cryptography Standards (PKCS) #3: norme d'accord de clé Diffie-Hellman\",\r\n '1.2.840.113549.1.3.1': 'PKCS #3 - Accord de clé Diffie-Hellman (DH)',\r\n\r\n // PKCS5 1.2.840.113549.1.5.*\r\n '1.2.840.113549.1.5': 'PKCS #5 - Public-Key Cryptography Standards (PKCS) #5',\r\n '1.2.840.113549.1.5.3': 'PKCS #5 PBE avec MD5 et DES',\r\n '1.2.840.113549.1.5.6': 'PKCS #5 PBE avec MD5 et RC2',\r\n '1.2.840.113549.1.5.10': 'PKCS #5 PBE avec SHA1 et DES',\r\n '1.2.840.113549.1.5.11': 'PKCS #5 PBE avec SHA1 et RC2',\r\n '1.2.840.113549.1.5.12': 'PKCS #5 - Password-Based Key Derivation Function 2 (PBKDF2)',\r\n '1.2.840.113549.1.5.13': 'PKCS #5 - Password-Based Encryption Scheme 2 (PBES2)',\r\n\r\n // PKCS7 1.2.840.113549.1.7.*\r\n '1.2.840.113549.1.7': 'Public-Key Cryptography Standards (PKCS) #7',\r\n '1.2.840.113549.1.7.1': 'Données PKCS #7',\r\n '1.2.840.113549.1.7.2': 'Données signées PKCS #7',\r\n '1.2.840.113549.1.7.3': 'PKCS #7 - Données en enveloppe',\r\n '1.2.840.113549.1.7.4': 'Données signées et enveloppes PKCS #7',\r\n '1.2.840.113549.1.7.5': 'Données condensées de PKCS #7',\r\n '1.2.840.113549.1.7.6': 'Données chiffrées de PKCS #7',\r\n\r\n // PKCS9 1.2.840.113549.1.9.*\r\n '1.2.840.113549.1.9': 'Public-Key Cryptography Standards (PKCS) #9',\r\n '1.2.840.113549.1.9.1': 'Adresse e-mail PKCS #9',\r\n '1.2.840.113549.1.9.2': 'Nom non structuré de PKCS #9',\r\n '1.2.840.113549.1.9.3': 'Type de contenu PKCS #9',\r\n '1.2.840.113549.1.9.4': 'PKCS #9 - Résumé de message',\r\n '1.2.840.113549.1.9.5': 'Heure de signature PKCS #9',\r\n '1.2.840.113549.1.9.6': 'Signature du compteur PKCS #9',\r\n '1.2.840.113549.1.9.7': 'PKCS #9 - Mot de passe du défi',\r\n '1.2.840.113549.1.9.8': 'Adresse non structurée de PKCS #9',\r\n '1.2.840.113549.1.9.9': 'Attributs de certificat étendus PKCS #9',\r\n '1.2.840.113549.1.9.10': 'PKCS #9 - Émetteur et numéro de série',\r\n '1.2.840.113549.1.9.14': \"PKCS #9 - Demande d'extension\",\r\n '1.2.840.113549.1.9.15': 'PKCS #9 - Capacité SMIME',\r\n '1.2.840.113549.1.9.16.1.4': \"PKCS #9 - Informations sur le jeton d'horodatage\",\r\n '1.2.840.113549.1.9.16.2.12': 'Certificat de signature PKCS #9',\r\n '1.2.840.113549.1.9.16.2.14': \"Jeton d'horodatage de signature PKCS #9\",\r\n '1.2.840.113549.1.9.16.3.18':\r\n 'PKCS #9 - AEAD_CHACHA20_POLY1305 - Algorithme Authenticated Encryption With Associated Data (AEAD)',\r\n '1.2.840.113549.1.9.20': 'PKCS #9 - Nom convivial',\r\n '1.2.840.113549.1.9.21': 'PKCS #9 - ID de clé locale',\r\n '1.2.840.113549.1.9.22.1': 'PKCS #9 x509Certificate (pour PKCS #12)',\r\n '1.2.840.113549.1.9.52': \"Protection de l'algorithme CMS PKCS #9\",\r\n\r\n // PKCS12 1.2.840.113549.1.12.*\r\n '1.2.840.113549.1.12': 'Public-Key Cryptography Standards (PKCS) #12',\r\n '1.2.840.113549.1.12.1.1': 'PKCS #12 SHA1-PBE avec RC4-128',\r\n '1.2.840.113549.1.12.1.2': 'PKCS #12 SHA1-PBE avec RC4-40',\r\n '1.2.840.113549.1.12.1.3': 'PKCS #12 SHA1-PBE avec DES-EDE',\r\n '1.2.840.113549.1.12.1.5': 'PKCS #12 SHA1-PBE avec RC2-128',\r\n '1.2.840.113549.1.12.1.6': 'PKCS #12 SHA1-PBE avec RC2-40',\r\n '1.2.840.113549.1.12.10.1.1': 'PKCS #12 - PKCS #8 - Conteneur de clés dissimulé',\r\n '1.2.840.113549.1.12.10.1.3': 'Sac de certificat PKCS #12',\r\n '1.2.840.113549.1.12.10.1.4': 'PKCS #12 - Conteneur de liste de révocation des certificats (CRL)',\r\n '1.2.840.113549.1.12.10.1.5': 'PKCS #12 - Conteneur de secret',\r\n '1.2.840.113549.1.12.10.1.6': 'PKCS #12 - Conteneur de contenu sécurisé',\r\n\r\n // Digest Algorithms 1.2.840.113549.2.*\r\n '1.2.840.113549.2': 'Algorithmes Digest',\r\n '1.2.840.113549.2.2': 'Message Digest #2 (MD2)',\r\n '1.2.840.113549.2.5': 'Message Digest #5 (MD5)',\r\n '1.2.840.113549.2.7': 'HMAC-SHA-1',\r\n '1.2.840.113549.2.8': 'HMAC-SHA-224',\r\n '1.2.840.113549.2.9': 'HMAC-SHA-256',\r\n '1.2.840.113549.2.10': 'HMAC-SHA-384',\r\n '1.2.840.113549.2.11': 'HMAC-SHA-512',\r\n '1.2.840.113549.2.12': 'HMAC-SHA-512/224',\r\n '1.2.840.113549.2.13': 'HMAC-SHA-512/256',\r\n\r\n // Encryption Algorithms 1.2.840.113549.3.*\r\n '1.2.840.113549.3': 'Algorithmes de chiffrement',\r\n '1.2.840.113549.3.2': 'RC2-CBC',\r\n '1.2.840.113549.3.4': 'RC4-CBC',\r\n '1.2.840.113549.3.7': 'DES-EDE3-CBC',\r\n '1.2.840.113549.3.9': 'RC5-CBC',\r\n\r\n // -- ANSI --\r\n // X9 1.2.840.10040.4.*\r\n '1.2.840.10040.4.1': \"Clé publique de l'objet DSA\",\r\n '1.2.840.10040.4.3': 'DSA avec SHA-1',\r\n\r\n // X9.62 1.2.840.10045.*\r\n '1.2.840.10045.2.1': 'Chiffrement de clé publique de courbe elliptique',\r\n\r\n '1.2.840.10045.3.0.5': 'TNB 191 V1',\r\n '1.2.840.10045.3.0.6': 'TNB 191 V2',\r\n '1.2.840.10045.3.0.7': 'TNB 191 V3',\r\n '1.2.840.10045.3.0.11': 'TNB 239 V1',\r\n '1.2.840.10045.3.0.12': 'TNB 239 V2',\r\n '1.2.840.10045.3.0.13': 'TNB 239 V3',\r\n '1.2.840.10045.3.0.18': 'TNB 359 V1',\r\n '1.2.840.10045.3.0.20': 'TNB 431 R1',\r\n '1.2.840.10045.3.1.1':\r\n 'Domaine de courbe elliptique « secp192r1 » répertorié dans la liste des domaines de courbe elliptique recommandés par « SEC 2 »',\r\n '1.2.840.10045.3.1.2': 'Prime 192 V2',\r\n '1.2.840.10045.3.1.3': 'Prime 192 V3',\r\n '1.2.840.10045.3.1.4': 'Prime 239 V1',\r\n '1.2.840.10045.3.1.5': 'Prime 239 V2',\r\n '1.2.840.10045.3.1.6': 'Prime 239 V3',\r\n '1.2.840.10045.3.1.7': 'NIST P-256',\r\n '1.2.840.10045.4.1': 'ANSI X9.62 EHERMESA With SHA-1',\r\n '1.2.840.10045.4.3.1': 'Valeurs de signature EHERMESA WithSHA-224',\r\n '1.2.840.10045.4.3.2': 'DSA avec SHA-256',\r\n '1.2.840.10045.4.3.3': 'DSA avec SHA-384',\r\n '1.2.840.10045.4.3.4': 'DSA avec SHA-512',\r\n '1.2.840.10045.4.3': 'ANSI X9.62 EHERMESA avec SHA2',\r\n\r\n // X9.42 1.2.840.10046.2.*\r\n '1.2.840.10046.2.1': \"Algorithme d'association de clé Diffie-Hellman (DH) éphémère statique\",\r\n\r\n // Teletrust 1.3.36.*\r\n '1.3.36.3.3.2.8.1.1.1': 'Ensemble de paramètres de domaine Brainpool P160r1',\r\n '1.3.36.3.3.2.8.1.1.3': 'Ensemble de paramètres de domaine Brainpool P192r1',\r\n '1.3.36.3.3.2.8.1.1.5': 'Ensemble de paramètres de domaine Brainpool P224r1',\r\n '1.3.36.3.3.2.8.1.1.7': 'Ensemble de paramètres de domaine Brainpool P256r1',\r\n '1.3.36.3.3.2.8.1.1.9': 'Ensemble de paramètres de domaine Brainpool P320r1',\r\n '1.3.36.3.3.2.8.1.1.11': 'Ensemble de paramètres de domaine Brainpool P384r1',\r\n '1.3.36.3.3.2.8.1.1.13': 'Ensemble de paramètres de domaine Brainpool P512r1',\r\n\r\n // Certicom 1.3.132.*\r\n '1.3.132.0.1': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect163k1 »',\r\n '1.3.132.0.2': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect163r1 »',\r\n '1.3.132.0.3': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect239k1 »',\r\n '1.3.132.0.4': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect113r1 »',\r\n '1.3.132.0.5': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect113r2 »',\r\n '1.3.132.0.6': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp112r1 »',\r\n '1.3.132.0.7': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp112r2 »',\r\n '1.3.132.0.8': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp160r1 »',\r\n '1.3.132.0.9': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp160k1 »',\r\n '1.3.132.0.10': 'Domaine de courbe elliptique recommandé par « SEC 2 » « ansip256k1 »',\r\n '1.3.132.0.15': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect163r2 »',\r\n '1.3.132.0.16': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect283k1 »',\r\n '1.3.132.0.17': 'Domaine de courbe elliptique recommandé par « SEC 2 »« sect283r1 »',\r\n '1.3.132.0.22': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect131r1 »',\r\n '1.3.132.0.23': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect131r2 »',\r\n '1.3.132.0.24': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect193r1 »',\r\n '1.3.132.0.25': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect193r2 »',\r\n '1.3.132.0.26': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect233k1 »',\r\n '1.3.132.0.27': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect233r1 »',\r\n '1.3.132.0.28': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp128r1 »',\r\n '1.3.132.0.29': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp128r2 »',\r\n '1.3.132.0.30': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp160r2 »',\r\n '1.3.132.0.31': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp192k1 »',\r\n '1.3.132.0.32': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp224k1 »',\r\n '1.3.132.0.33': 'Domaine de courbe elliptique recommandé par « SEC 2 » « secp224r1 »',\r\n '1.3.132.0.34': 'Courbe elliptique 384 bits de NIST (National Institute of Standards and Technology)',\r\n '1.3.132.0.35': 'Courbe elliptique 512 bits de NIST (National Institute of Standards and Technology)',\r\n '1.3.132.0.36': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect409k1 »',\r\n '1.3.132.0.37': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect409r1 »',\r\n '1.3.132.0.38': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect571k1 »',\r\n '1.3.132.0.39': 'Domaine de courbe elliptique recommandé par « SEC 2 » « sect571r1 »',\r\n '1.3.132.1.12': 'Algorithme ECDH (Elliptic Curve Diffie-Hellman)',\r\n\r\n // OIW secsig 1.3.14.3.*\r\n '1.3.14.3.2.7':\r\n 'Norme Data Encryption Standard (DES) de clé unique en mode CBC (Cipher Block Chaining) avec opération de remplissage',\r\n '1.3.14.3.2.12': 'Algorithme de signature numérique (DSA)',\r\n '1.3.14.3.2.13':\r\n \"Algorithme de sécurité DSA (Digital Signature Algorithm) qui utilise l'algorithme SHA (Secure Hash Algorithm) pour hachage le contenu du message\",\r\n '1.3.14.3.2.15':\r\n \"Algorithme RSA (Rivest, Shamir et Adleman) couplé à l'algorithme SHA (Seucre Hash Algorithm) (Oddball utilisant les règles de remplissage ISO/IEC 9796-2)\",\r\n '1.3.14.3.2.17':\r\n \"Chiffrement vocal à l'aide de l'algorithme DES (Data Encryption Standard) (168 bits) couplé au mode d'opération de chiffrement multiple EDE (Encrypt-Decrypt-Encrypt)\",\r\n '1.3.14.3.2.26': 'Secure Hash Algorithm, révision 1 (SHA-1)',\r\n '1.3.14.3.2.27':\r\n \"Algorithme DSA (Digital Signature Algorithm) qui utilise l'algorithme SHA1 (Secure Hash Algorithm 1) produisant une signature 320 bits\",\r\n '1.3.14.3.2.29':\r\n \"Algorithme RSA (Rivest, Shaman et Adman) qui utilise l'algorithme SHA1 (Secure Hash Algorithm 1) (obsolète)\",\r\n\r\n // Thawte 1.3.101.*\r\n '1.3.101.110': \"Algorithme Curve25519 (ou X25519) utilisé avec l'opération Diffie-Hellman\",\r\n '1.3.101.111': \"Algorithme Curve448 (ou X448) utilisé avec l'opération Diffie-Hellman\",\r\n '1.3.101.112': 'Edwards-curve Digital Signature Algorithm (EdDSA) Ed25519',\r\n '1.3.101.113': 'Edwards-curve Digital Signature Algorithm (EdDSA) Ed448',\r\n\r\n // University College London (UCL) 0.9.2342.19200300.*\r\n '0.9.2342.19200300.100.1.1': \"ID d'utilisateur (UID)\",\r\n '0.9.2342.19200300.100.1.25': 'Composant de domaine (DC)',\r\n\r\n // Netscape 2.16.840.1.113730.*\r\n '2.16.840.1.113730.1.1': 'Type de certificat de Netscape',\r\n '2.16.840.1.113730.2.5': 'Séquence de certificats',\r\n '2.16.840.1.113730.4.1': 'Netscape Server Gated Crypto (SGC)',\r\n },\r\n ja: {\r\n loading: 'Loading',\r\n\r\n 'issued-to': '発行先',\r\n 'issued-by': '発行元',\r\n 'issued-on': '発行日',\r\n 'expires-on': '有効期限',\r\n 'validity-period': '有効期間',\r\n fingerprints: 'フィンガープリント',\r\n 'sha-256-fingerprint': 'SHA-256 フィンガープリント',\r\n 'sha-1-fingerprint': 'SHA-1 フィンガープリント',\r\n title: '証明書ビューア: {{title}}',\r\n general: '全般',\r\n details: '詳細',\r\n 'not-part-of-certificate': '<Not part of certificate>',\r\n 'certificate-hierarchy': '証明書の階層',\r\n 'certificate-fields': '証明書フィールド',\r\n 'field-value': 'フィールド値',\r\n version: 'バージョン',\r\n 'version-format': 'バージョン {{version}}',\r\n validity: '有効期間',\r\n 'not-before': '次より後',\r\n 'not-after': '次より前',\r\n 'serial-number': 'シリアル番号',\r\n issuer: '発行者',\r\n subject: '件名',\r\n 'certificate-signature-algorithm': '証明書署名アルゴリズム',\r\n 'certificate-signature-value': '証明書署名値',\r\n 'subject-public-key-info': 'サブジェクトのパブリック キーの情報',\r\n 'subject-public-key-algorithm': 'サブジェクトのパブリック キーのアルゴリズム',\r\n 'subjects-public-key': 'サブジェクトのパブリック キー',\r\n 'modulus-bits': 'モジュラス ({{bits}} ビット):',\r\n 'public-exponent': '公開指数:',\r\n 'named-curve': '名前付き曲線: {{curve}}',\r\n extensions: '拡張機能',\r\n critical: '重大',\r\n 'not-critical': '重大ではない',\r\n signing: '署名',\r\n 'certificate-signer': '証明書署名者',\r\n 'hermes-signer': 'CRL 署名者',\r\n 'is-not-cert-authority': '認証局ではない',\r\n 'is-cert-authority': '認証局である',\r\n 'max-number-intermediate-CAs': '中間 CA の最大数: {{maxNumber}}',\r\n unlimited: '制限なし',\r\n 'key-id': 'キー ID: {{id}}',\r\n\r\n 'general-name-other-name': '他の名称',\r\n 'general-name-rfc822-name': 'RFC822 名',\r\n 'general-name-dns-name': 'DNS 名',\r\n 'general-name-x400-address': 'X400 アドレス',\r\n 'general-name-directory-name': 'ディレクトリ名',\r\n 'general-name-edi-party-name': 'EDI パーティ名',\r\n 'general-name-uri': 'URI',\r\n 'general-name-ip-address': 'IP アドレス',\r\n 'general-name-registered-id': '登録 ID',\r\n\r\n 'key-usage-digitalSignature': '署名',\r\n 'key-usage-nonRepudiation': '否認防止',\r\n 'key-usage-keyEncipherment': 'キー暗号化',\r\n 'key-usage-dataEncipherment': 'データ暗号化',\r\n 'key-usage-keyAgreement': 'キー共有',\r\n 'key-usage-keyCertSign': '証明書署名者',\r\n 'key-usage-cRLSign': 'CRL 署名者',\r\n 'key-usage-encipherOnly': '暗号化のみ',\r\n 'key-usage-decipherOnly': '解読のみ',\r\n\r\n 'crl-issuer': 'CRL 発行者:',\r\n reasons: '理由:',\r\n\r\n // X.500 Attributes 2.5.4.* with their relative distinguished names (RDNs)\r\n '2.5.4.3': '共通名 (CN)',\r\n '2.5.4.4': '姓 (SN)',\r\n '2.5.4.5': 'シリアル番号 (SERIALNUMBER)',\r\n '2.5.4.6': '国名 (C)',\r\n '2.5.4.7': 'ローカリティ名 (L)',\r\n '2.5.4.8': '都道府県名 (ST)',\r\n '2.5.4.9': '住所 (STREET)',\r\n '2.5.4.10': '組織名 (O)',\r\n '2.5.4.11': '組織単位 (OU)',\r\n '2.5.4.12': '敬称 (T)',\r\n '2.5.4.43': 'イニシャル (I)',\r\n '2.5.4.42': '名 (GN)',\r\n '2.5.4.44': '世代修飾子',\r\n '2.5.4.46': '識別名修飾子 (DN 修飾子)',\r\n\r\n // Certificate Extension 2.5.29.*\r\n '2.5.29.9': 'サブジェクト ディレクトリ属性',\r\n '2.5.29.14': '証明書のサブジェクト キー ID',\r\n '2.5.29.15': '証明書キー使用法',\r\n '2.5.29.16': 'プライベート キー使用法',\r\n '2.5.29.17': '証明書のサブジェクト代替名',\r\n '2.5.29.18': '証明書発行者の代替名',\r\n '2.5.29.19': '証明書の基本制約',\r\n '2.5.29.20': 'CRL 番号',\r\n '2.5.29.21': '理由コード',\r\n '2.5.29.23': '命令コードを保持',\r\n '2.5.29.24': '無効日',\r\n '2.5.29.27': 'デルタ CRL インジケータ',\r\n '2.5.29.28': '発行配布ポイント',\r\n '2.5.29.29': '証明書発行者',\r\n '2.5.29.30': '名前の制約',\r\n '2.5.29.31': 'CRL 配布ポイント',\r\n '2.5.29.32': '証明書ポリシー',\r\n '2.5.29.32.0': 'すべてのポリシー',\r\n '2.5.29.33': 'ポリシー マッピング',\r\n '2.5.29.35': '認証局キー ID',\r\n '2.5.29.36': 'ポリシーの制約',\r\n '2.5.29.37': '拡張キー使用率',\r\n '2.5.29.37.0': 'すべての拡張キー使用法',\r\n '2.5.29.46': 'Freshest CRL',\r\n '2.5.29.54': 'すべてのポリシーの禁止',\r\n\r\n // PKIX 1.3.6.1.5.5.7.*\r\n '1.3.6.1.5.5.7.1.1': '認証局情報アクセス',\r\n '1.3.6.1.5.5.7.1.11': 'サブジェクト情報アクセス',\r\n '1.3.6.1.5.5.7.2.1': '認証業務規定の指針',\r\n '1.3.6.1.5.5.7.3.1': 'TLS WWW サーバ認証',\r\n '1.3.6.1.5.5.7.3.2': 'TLS WWW クライアント認証',\r\n '1.3.6.1.5.5.7.3.3': 'ダウンロード可能な実行可能コードの署名',\r\n '1.3.6.1.5.5.7.3.4': 'E メール保護',\r\n '1.3.6.1.5.5.7.3.5': 'IPSEC エンド システム証明書',\r\n '1.3.6.1.5.5.7.3.6': 'IPSEC トンネル証明書',\r\n '1.3.6.1.5.5.7.3.7': 'IPSEC ユーザー証明書',\r\n '1.3.6.1.5.5.7.3.8': 'PKIX キーの目的のタイムスタンプ生成',\r\n '1.3.6.1.5.5.7.3.9': 'OCSP 応答の署名',\r\n '1.3.6.1.5.5.7.48.1': 'Online Certificate Status Protocol (OCSP)',\r\n '1.3.6.1.5.5.7.48.1.1': 'OCSP 基本応答',\r\n '1.3.6.1.5.5.7.48.1.2': 'OCSP ノンス拡張機能',\r\n '1.3.6.1.5.5.7.48.1.3': '証明書失効リスト (CRL) 参照',\r\n '1.3.6.1.5.5.7.48.1.4': 'OCSP クライアントによって認識される応答タイプ',\r\n '1.3.6.1.5.5.7.48.1.5': 'OCSP チェック不要拡張機能',\r\n '1.3.6.1.5.5.7.48.1.6': 'OCSP アーカイブ切り捨て拡張機能',\r\n '1.3.6.1.5.5.7.48.1.7': 'OCSP サービス ロケーター拡張機能',\r\n '1.3.6.1.5.5.7.48.1.8': '優先署名アルゴリズムのクライアント表示',\r\n '1.3.6.1.5.5.7.48.2': '認証局発行者',\r\n '1.3.6.1.5.5.7.48.3': 'タイムスタンプ生成',\r\n '1.3.6.1.5.5.7.48.5': '認証局 (CA) リポジトリ',\r\n\r\n // -- NIST --\r\n // AES 2.16.840.1.101.3.4.1.*\r\n '2.16.840.1.101.3.4.1': 'Advanced Encryption Standard (AES)',\r\n '2.16.840.1.101.3.4.1.1': 'AES-128 ECB',\r\n '2.16.840.1.101.3.4.1.2': 'AES-128 CBC',\r\n '2.16.840.1.101.3.4.1.3': 'AES-128 OFB',\r\n '2.16.840.1.101.3.4.1.4': 'AES-128 CFB',\r\n '2.16.840.1.101.3.4.1.5': 'AES-128 KW',\r\n '2.16.840.1.101.3.4.1.6': 'AES-128 GCM',\r\n '2.16.840.1.101.3.4.1.8': 'AES-128 KWP',\r\n '2.16.840.1.101.3.4.1.21': 'AES-192 ECB',\r\n '2.16.840.1.101.3.4.1.22': 'AES-192 CBC',\r\n '2.16.840.1.101.3.4.1.23': 'AES-192 OFB',\r\n '2.16.840.1.101.3.4.1.24': 'AES-192 CFB',\r\n '2.16.840.1.101.3.4.1.25': 'AES-192 KW',\r\n '2.16.840.1.101.3.4.1.26': 'AES-192 GCM',\r\n '2.16.840.1.101.3.4.1.28': 'AES-192 KWP',\r\n '2.16.840.1.101.3.4.1.41': 'AES-256 ECB',\r\n '2.16.840.1.101.3.4.1.42': 'AES-256 CBC',\r\n '2.16.840.1.101.3.4.1.43': 'AES-256 OFB',\r\n '2.16.840.1.101.3.4.1.44': 'AES-256 CFB',\r\n '2.16.840.1.101.3.4.1.45': 'AES-256 KW',\r\n '2.16.840.1.101.3.4.1.46': 'AES-256 GCM',\r\n '2.16.840.1.101.3.4.1.48': 'AES-256 KWP',\r\n\r\n // Secure Hash Algorithms 2.16.840.1.101.3.4.2.*\r\n '2.16.840.1.101.3.4.2': 'Secure Hash Algorithm',\r\n '2.16.840.1.101.3.4.2.1': 'SHA-256',\r\n '2.16.840.1.101.3.4.2.2': 'SHA-384',\r\n '2.16.840.1.101.3.4.2.3': 'SHA-512',\r\n '2.16.840.1.101.3.4.2.4': 'SHA-224',\r\n '2.16.840.1.101.3.4.2.5': 'SHA-512/224',\r\n '2.16.840.1.101.3.4.2.6': 'SHA-512/256',\r\n '2.16.840.1.101.3.4.2.7': 'SHA3-224',\r\n '2.16.840.1.101.3.4.2.8': 'SHA3-256',\r\n '2.16.840.1.101.3.4.2.9': 'SHA3-384',\r\n '2.16.840.1.101.3.4.2.10': 'SHA3-512',\r\n '2.16.840.1.101.3.4.2.11': 'SHAKE-128',\r\n '2.16.840.1.101.3.4.2.12': 'SHAKE-256',\r\n '2.16.840.1.101.3.4.2.13': 'HMAC-SHA3-224',\r\n '2.16.840.1.101.3.4.2.14': 'HMAC-SHA3-256',\r\n '2.16.840.1.101.3.4.2.15': 'HMAC-SHA3-384',\r\n '2.16.840.1.101.3.4.2.16': 'HMAC-SHA3-512',\r\n '2.16.840.1.101.3.4.2.17': 'SHAKE-128 (ShakeOutputLen パラメータを指定)',\r\n '2.16.840.1.101.3.4.2.18': 'SHAKE-256 (ShakeOutputLen パラメータを指定)',\r\n\r\n // Signature Algorithms 2.16.840.1.101.3.4.3.*\r\n '2.16.840.1.101.3.4.3': '署名アルゴリズム',\r\n '2.16.840.1.101.3.4.3.1': 'SHA-224 と DSA',\r\n '2.16.840.1.101.3.4.3.2': 'SHA-256 と DSA',\r\n '2.16.840.1.101.3.4.3.3': 'SHA-384 と DSA',\r\n '2.16.840.1.101.3.4.3.4': 'SHA-512 と DSA',\r\n '2.16.840.1.101.3.4.3.5': 'SHA3-224 と DSA',\r\n '2.16.840.1.101.3.4.3.6': 'SHA3-256 と DSA',\r\n '2.16.840.1.101.3.4.3.7': 'SHA3-384 と DSA',\r\n '2.16.840.1.101.3.4.3.8': 'SHA3-512 と DSA',\r\n '2.16.840.1.101.3.4.3.9': 'SHA3-224 と EHERMESA',\r\n '2.16.840.1.101.3.4.3.10': 'SHA3-256 と EHERMESA',\r\n '2.16.840.1.101.3.4.3.11': 'SHA3-384 と EHERMESA',\r\n '2.16.840.1.101.3.4.3.12': 'SHA3-512 と EHERMESA',\r\n '2.16.840.1.101.3.4.3.13': 'SHA3-224 と RSA',\r\n '2.16.840.1.101.3.4.3.14': 'SHA3-256 と RSA',\r\n '2.16.840.1.101.3.4.3.15': 'SHA3-384 と RSA',\r\n '2.16.840.1.101.3.4.3.16': 'SHA3-512 と RSA',\r\n\r\n // RSA Security\r\n // PKCS1 1.2.840.113549.1.1.*\r\n '1.2.840.113549.1.1': 'Public-Key Cryptography Standards (PKCS) #1',\r\n '1.2.840.113549.1.1.1': 'PKCS #1 RSAES-PKCS1-v1_5 暗号化スキーム',\r\n '1.2.840.113549.1.1.2': 'PKCS #1 MD2 と RSA 暗号化',\r\n '1.2.840.113549.1.1.4': 'PKCS #1 MD5 と RSA 暗号化',\r\n '1.2.840.113549.1.1.5': 'PKCS #1 SHA1 と RSA 暗号化',\r\n '1.2.840.113549.1.1.7': 'PKCS #1 RSA OAEP 暗号化セット',\r\n '1.2.840.113549.1.1.8': 'PKCS #1 RSA と MGF1',\r\n '1.2.840.113549.1.1.9': 'PKCS #1 RSA P 指定',\r\n '1.2.840.113549.1.1.10': 'PKCS #1 RSASSA-PSS',\r\n '1.2.840.113549.1.1.11': 'PKCS #1 SHA-256 と RSA 暗号化',\r\n '1.2.840.113549.1.1.12': 'PKCS #1 SHA-384 と RSA 暗号化',\r\n '1.2.840.113549.1.1.13': 'PKCS #1 SHA-512 と RSA 暗号化',\r\n '1.2.840.113549.1.1.14': 'PKCS #1 SHA-224 と RSA 暗号化',\r\n '1.2.840.113549.1.1.15': 'PKCS #1 SHA-512/224 と RSA 暗号化',\r\n '1.2.840.113549.1.1.16': 'PKCS #1 SHA-512/256 と RSA 暗号化',\r\n\r\n // PKCS3 1.2.840.113549.1.3.*\r\n '1.2.840.113549.1.3': 'Public-Key Cryptography Standards (PKCS) #3: Diffie-Hellman Key-Agreement Standard',\r\n '1.2.840.113549.1.3.1': 'PKCS #3 Diffie-Hellman (DH) キー共有',\r\n\r\n // PKCS5 1.2.840.113549.1.5.*\r\n '1.2.840.113549.1.5': 'PKCS #5 Public-Key Cryptography Standards (PKCS) #5',\r\n '1.2.840.113549.1.5.3': 'PKCS #5 PBE と MD5、DES',\r\n '1.2.840.113549.1.5.6': 'PKCS #5 PBE と MD5、RC2',\r\n '1.2.840.113549.1.5.10': 'PKCS #5 PBE と SHA1、DES',\r\n '1.2.840.113549.1.5.11': 'PKCS #5 PBE と SHA1、RC2',\r\n '1.2.840.113549.1.5.12': 'PKCS #5 Password-Based Key Derivation Function 2 (PBKDF2)',\r\n '1.2.840.113549.1.5.13': 'PKCS #5 Password-Based Encryption Scheme 2 (PBES2)',\r\n\r\n // PKCS7 1.2.840.113549.1.7.*\r\n '1.2.840.113549.1.7': 'Public-Key Cryptography Standards (PKCS) #7',\r\n '1.2.840.113549.1.7.1': 'PKCS #7 データ',\r\n '1.2.840.113549.1.7.2': 'PKCS #7 署名済みデータ',\r\n '1.2.840.113549.1.7.3': 'PKCS #7 エンベロープ データ',\r\n '1.2.840.113549.1.7.4': 'PKCS #7 署名済みデータとエンベロープ データ',\r\n '1.2.840.113549.1.7.5': 'PKCS #7 ダイジェスト データ',\r\n '1.2.840.113549.1.7.6': 'PKCS #7 暗号化されたデータ',\r\n\r\n // PKCS9 1.2.840.113549.1.9.*\r\n '1.2.840.113549.1.9': 'Public-Key Cryptography Standards (PKCS) #9',\r\n '1.2.840.113549.1.9.1': 'PKCS #9 メール アドレス',\r\n '1.2.840.113549.1.9.2': 'PKCS #9 非構造化名',\r\n '1.2.840.113549.1.9.3': 'PKCS #9 コンテンツ タイプ',\r\n '1.2.840.113549.1.9.4': 'PKCS #9 メッセージ ダイジェスト',\r\n '1.2.840.113549.1.9.5': 'PKCS #9 署名時刻',\r\n '1.2.840.113549.1.9.6': 'PKCS #9 カウンタ署名',\r\n '1.2.840.113549.1.9.7': 'PKCS #9 チャレンジ パスワード',\r\n '1.2.840.113549.1.9.8': 'PKCS #9 非構造化アドレス',\r\n '1.2.840.113549.1.9.9': 'PKCS #9 拡張証明書属性',\r\n '1.2.840.113549.1.9.10': 'PKCS #9 発行者とシリアル番号',\r\n '1.2.840.113549.1.9.14': 'PKCS #9 拡張要求',\r\n '1.2.840.113549.1.9.15': 'PKCS #9 SMIME 機能',\r\n '1.2.840.113549.1.9.16.1.4': 'PKCS #9 タイムスタンプ トークン情報',\r\n '1.2.840.113549.1.9.16.2.12': 'PKCS #9 署名証明書',\r\n '1.2.840.113549.1.9.16.2.14': 'PKCS #9 署名タイムスタンプ トークン',\r\n '1.2.840.113549.1.9.16.3.18':\r\n 'PKCS #9 AEAD_CHACHA20_POLY1305 Authenticated Encryption With Associated Data (AEAD) アルゴリズム',\r\n '1.2.840.113549.1.9.20': 'PKCS #9 フレンドリ名',\r\n '1.2.840.113549.1.9.21': 'PKCS #9 ローカル キー ID',\r\n '1.2.840.113549.1.9.22.1': 'PKCS #9 x509 証明書 (PKCS #12 の場合)',\r\n '1.2.840.113549.1.9.52': 'PKCS #9 CMS アルゴリズム保護',\r\n\r\n // PKCS12 1.2.840.113549.1.12.*\r\n '1.2.840.113549.1.12': 'Public-Key Cryptography Standards (PKCS) #12',\r\n '1.2.840.113549.1.12.1.1': 'PKCS #12 SHA1-PBE と RC4-128',\r\n '1.2.840.113549.1.12.1.2': 'PKCS #12 SHA1-PBE と RC4-40',\r\n '1.2.840.113549.1.12.1.3': 'PKCS #12 SHA1-PBE と DES-EDE',\r\n '1.2.840.113549.1.12.1.5': 'PKCS #12 SHA1-PBE と RC2-128',\r\n '1.2.840.113549.1.12.1.6': 'PKCS #12 SHA1-PBE と RC2-40',\r\n '1.2.840.113549.1.12.10.1.1': 'PKCS #12 PKCS #8 シュラウド キー バッグ',\r\n '1.2.840.113549.1.12.10.1.3': 'PKCS #12 証明書バッグ',\r\n '1.2.840.113549.1.12.10.1.4': 'PKCS #12 証明書失効リスト (CRL) バッグ',\r\n '1.2.840.113549.1.12.10.1.5': 'PKCS #12 シークレット バッグ',\r\n '1.2.840.113549.1.12.10.1.6': 'PKCS #12 セーフ コンテンツ バッグ',\r\n\r\n // Digest Algorithms 1.2.840.113549.2.*\r\n '1.2.840.113549.2': 'ダイジェスト アルゴリズム',\r\n '1.2.840.113549.2.2': 'メッセージ ダイジェスト #2 (MD2)',\r\n '1.2.840.113549.2.5': 'メッセージ ダイジェスト #5 (MD5)',\r\n '1.2.840.113549.2.7': 'HMAC-SHA-1',\r\n '1.2.840.113549.2.8': 'HMAC-SHA-224',\r\n '1.2.840.113549.2.9': 'HMAC-SHA-256',\r\n '1.2.840.113549.2.10': 'HMAC-SHA-384',\r\n '1.2.840.113549.2.11': 'HMAC-SHA-512',\r\n '1.2.840.113549.2.12': 'HMAC-SHA-512/224',\r\n '1.2.840.113549.2.13': 'HMAC-SHA-512/256',\r\n\r\n // Encryption Algorithms 1.2.840.113549.3.*\r\n '1.2.840.113549.3': '暗号化アルゴリズム',\r\n '1.2.840.113549.3.2': 'RC2-CBC',\r\n '1.2.840.113549.3.4': 'RC4-CBC',\r\n '1.2.840.113549.3.7': 'DES-EDE3-CBC',\r\n '1.2.840.113549.3.9': 'RC5-CBC',\r\n\r\n // -- ANSI --\r\n // X9 1.2.840.10040.4.*\r\n '1.2.840.10040.4.1': 'DSA サブジェクトのパブリック キー',\r\n '1.2.840.10040.4.3': 'DSA と SHA-1',\r\n\r\n // X9.62 1.2.840.10045.*\r\n '1.2.840.10045.2.1': '楕円曲線パブリック キー暗号化',\r\n\r\n '1.2.840.10045.3.0.5': 'TNB 191 V1',\r\n '1.2.840.10045.3.0.6': 'TNB 191 V2',\r\n '1.2.840.10045.3.0.7': 'TNB 191 V3',\r\n '1.2.840.10045.3.0.11': 'TNB 239 V1',\r\n '1.2.840.10045.3.0.12': 'TNB 239 V2',\r\n '1.2.840.10045.3.0.13': 'TNB 239 V3',\r\n '1.2.840.10045.3.0.18': 'TNB 359 V1',\r\n '1.2.840.10045.3.0.20': 'TNB 431 R1',\r\n '1.2.840.10045.3.1.1': '「SEC 2」推奨の楕円曲線ドメインにリストされた楕円曲線ドメイン「secp192r1」',\r\n '1.2.840.10045.3.1.2': 'Prime 192 V2',\r\n '1.2.840.10045.3.1.3': 'Prime 192 V3',\r\n '1.2.840.10045.3.1.4': 'Prime 239 V1',\r\n '1.2.840.10045.3.1.5': 'Prime 239 V2',\r\n '1.2.840.10045.3.1.6': 'Prime 239 V3',\r\n '1.2.840.10045.3.1.7': 'NIST P-256',\r\n '1.2.840.10045.4.1': 'ANSI X9.62 EHERMESA と SHA-1',\r\n '1.2.840.10045.4.3.1': 'EHERMESA と SHA-224 署名値',\r\n '1.2.840.10045.4.3.2': 'DSA と SHA-256',\r\n '1.2.840.10045.4.3.3': 'DSA と SHA-384',\r\n '1.2.840.10045.4.3.4': 'DSA と SHA-512',\r\n '1.2.840.10045.4.3': 'ANSI X9.62 EHERMESA と SHA2',\r\n\r\n // X9.42 1.2.840.10046.2.*\r\n '1.2.840.10046.2.1': 'Ephemeral-Static Diffie-Hellman (DH) キー共有アルゴリズム',\r\n\r\n // Teletrust 1.3.36.*\r\n '1.3.36.3.3.2.8.1.1.1': 'Brainpool P160r1 ドメイン パラメータ セット',\r\n '1.3.36.3.3.2.8.1.1.3': 'Brainpool P192r1 ドメイン パラメータ セット',\r\n '1.3.36.3.3.2.8.1.1.5': 'Brainpool P224r1 ドメイン パラメータ セット',\r\n '1.3.36.3.3.2.8.1.1.7': 'Brainpool P256r1 ドメイン パラメータ セット',\r\n '1.3.36.3.3.2.8.1.1.9': 'Brainpool P320r1 ドメイン パラメータ セット',\r\n '1.3.36.3.3.2.8.1.1.11': 'Brainpool P384r1 ドメイン パラメータ セット',\r\n '1.3.36.3.3.2.8.1.1.13': 'Brainpool P512r1 ドメイン パラメータ セット',\r\n\r\n // Certicom 1.3.132.*\r\n '1.3.132.0.1': '「SEC 2」推奨の楕円曲線ドメイン「sect163k1」',\r\n '1.3.132.0.2': '「SEC 2」推奨の楕円曲線ドメイン「sect163r1」',\r\n '1.3.132.0.3': '「SEC 2」推奨の楕円曲線ドメイン「sect239k1」',\r\n '1.3.132.0.4': '「SEC 2」推奨の楕円曲線ドメイン「sect113r1」',\r\n '1.3.132.0.5': '「SEC 2」推奨の楕円曲線ドメイン「sect113r2」',\r\n '1.3.132.0.6': '「SEC 2」推奨の楕円曲線ドメイン「secp112r1」',\r\n '1.3.132.0.7': '「SEC 2」推奨の楕円曲線ドメイン「secp112r2」',\r\n '1.3.132.0.8': '「SEC 2」推奨の楕円曲線ドメイン「secp160r1」',\r\n '1.3.132.0.9': '「SEC 2」推奨の楕円曲線ドメイン「secp160k1」',\r\n '1.3.132.0.10': '「SEC 2」推奨の楕円曲線ドメイン「ansip256k1」',\r\n '1.3.132.0.15': '「SEC 2」推奨の楕円曲線ドメイン「sect163r2」',\r\n '1.3.132.0.16': '「SEC 2」推奨の楕円曲線ドメイン「sect283k1」',\r\n '1.3.132.0.17': '「SEC 2」推奨の楕円曲線ドメイン「sect283r1」',\r\n '1.3.132.0.22': '「SEC 2」推奨の楕円曲線ドメイン「sect131r1」',\r\n '1.3.132.0.23': '「SEC 2」推奨の楕円曲線ドメイン「sect131r2」',\r\n '1.3.132.0.24': '「SEC 2」推奨の楕円曲線ドメイン「sect193r1」',\r\n '1.3.132.0.25': '「SEC 2」推奨の楕円曲線ドメイン「sect193r2」',\r\n '1.3.132.0.26': '「SEC 2」推奨の楕円曲線ドメイン「sect233k1」',\r\n '1.3.132.0.27': '「SEC 2」推奨の楕円曲線ドメイン「sect233r1」',\r\n '1.3.132.0.28': '「SEC 2」推奨の楕円曲線ドメイン「secp128r1」',\r\n '1.3.132.0.29': '「SEC 2」推奨の楕円曲線ドメイン「secp128r2」',\r\n '1.3.132.0.30': '「SEC 2」推奨の楕円曲線ドメイン「secp160r2」',\r\n '1.3.132.0.31': '「SEC 2」推奨の楕円曲線ドメイン「secp192k1」',\r\n '1.3.132.0.32': '「SEC 2」推奨の楕円曲線ドメイン「secp224k1」',\r\n '1.3.132.0.33': '「SEC 2」推奨の楕円曲線ドメイン「secp224r1」',\r\n '1.3.132.0.34': '米国国立標準技術研究所 (NIST) 384 ビット楕円曲線',\r\n '1.3.132.0.35': '米国国立標準技術研究所 (NIST) 512 ビット楕円曲線',\r\n '1.3.132.0.36': '「SEC 2」推奨の楕円曲線ドメイン「sect409k1」',\r\n '1.3.132.0.37': '「SEC 2」推奨の楕円曲線ドメイン「sect409r1」',\r\n '1.3.132.0.38': '「SEC 2」推奨の楕円曲線ドメイン「sect571k1」',\r\n '1.3.132.0.39': '「SEC 2」推奨の楕円曲線ドメイン「sect571r1」',\r\n '1.3.132.1.12': '楕円曲線 Diffie-Hellman (ECDH) アルゴリズム',\r\n\r\n // OIW secsig 1.3.14.3.*\r\n '1.3.14.3.2.7': 'パディング処理を使用する Cipher Block Chaining (CBC) モードのシングルキー データ暗号化標準 (DES)',\r\n '1.3.14.3.2.12': 'デジタル署名アルゴリズム (DSA)',\r\n '1.3.14.3.2.13':\r\n 'Secure Hash Algorithm (SHA) を使用してメッセージのコンテンツをハッシュ化するセキュリティ デジタル署名アルゴリズム (DSA)',\r\n '1.3.14.3.2.15':\r\n 'Rivest, Shamir and Adleman (RSA) アルゴリズムと Secure Hash Algorithm (SHA) の組み合わせ (ISO/IEC 9796-2 パディング ルールを使用する Oddball)',\r\n '1.3.14.3.2.17':\r\n 'データ暗号化標準 (DES) (168 ビット) アルゴリズムを使用する音声暗号化と Encrypt-Decrypt-Encrypt (EDE) マルチ暗号化操作モードの組み合わせ',\r\n '1.3.14.3.2.26': 'Secure Hash Algorithm、リビジョン 1 (SHA-1)',\r\n '1.3.14.3.2.27': '320 ビット署名を生成する Secure Hash Algorithm 1 (SHA1) を使用するデジタル署名アルゴリズム (DSA)',\r\n '1.3.14.3.2.29': 'Secure Hash Algorithm 1 (SHA1) を使用する Rivest, Shamir and Adleman (RSA) アルゴリズム (廃止)',\r\n\r\n // Thawte 1.3.101.*\r\n '1.3.101.110': 'Diffie-Hellman 操作で使用される Curve25519 (または X25519) アルゴリズム',\r\n '1.3.101.111': 'Diffie-Hellman 操作で使用される Curve448 (または X448) アルゴリズム',\r\n '1.3.101.112': 'エドワーズ曲線デジタル署名アルゴリズム (EdDSA) Ed25519',\r\n '1.3.101.113': 'エドワーズ曲線デジタル署名アルゴリズム (EdDSA) Ed448',\r\n\r\n // University College London (UCL) 0.9.2342.19200300.*\r\n '0.9.2342.19200300.100.1.1': 'ユーザー ID (UID)',\r\n '0.9.2342.19200300.100.1.25': 'ドメイン コンポーネント (DC)',\r\n\r\n // Netscape 2.16.840.1.113730.*\r\n '2.16.840.1.113730.1.1': 'Netscape 証明書タイプ',\r\n '2.16.840.1.113730.2.5': '証明書シーケンス',\r\n '2.16.840.1.113730.4.1': 'Netscape Server Gated Crypto (SGC)',\r\n },\r\n};\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { AppfxLocale } from '@hermes-ui/angular/addons/translate';\r\n\r\nimport { translations } from './certificate-viewer.l10n';\r\n\r\n/**\r\n * The algorithm names passed to {@link crypto.subtle.digest} by the certificate viewer.\r\n */\r\nexport const enum AlgorithmName {\r\n sha1 = 'SHA-1',\r\n sha256 = 'SHA-256',\r\n}\r\n\r\n/**\r\n * Know PKI Object Identifiers.\r\n *\r\n * This is not a complete set of OIDs but only the ones that are used throughout the certificate viewer so that they can be referred easily.\r\n */\r\nexport enum KnownOids {\r\n CommonName = '2.5.4.3',\r\n Organization = '2.5.4.10',\r\n OrganizationalUnit = '2.5.4.11',\r\n KeyUsage = '2.5.29.15',\r\n ExtendedKeyUsage = '2.5.29.37',\r\n BasicCertificateConstraints = '2.5.29.19',\r\n ExtensionSubjectKeyId = '2.5.29.14',\r\n ExtensionAuthorityKeyId = '2.5.29.35',\r\n AuthorityInformationAccess = '1.3.6.1.5.5.7.1.1',\r\n SubjectAltName = '2.5.29.17',\r\n CertificatePolicies = '2.5.29.32',\r\n CrlDistributionPoints = '2.5.29.31',\r\n}\r\n\r\ntype LocaleKeysArray = Readonly<Array<keyof (typeof translations)[AppfxLocale.En]>>;\r\n\r\n/**\r\n * NOTE: The order of this array matters.\r\n * The generic name type is a numeric index which corresponds to a name in this array.\r\n *\r\n * From RFC-5280\r\n * GeneralName ::= Choice {\r\n * otherName [0] OtherName,\r\n * rfc822Name [1] IA5String,\r\n * dNSName [2] IA5String,\r\n * x400Address [3] ORAddress,\r\n * directoryName [4] value,\r\n * ediPartyName [5] EDIPartyName,\r\n * uniformResourceIdentifier [6] IA5String,\r\n * iPAddress [7] OCTET STRING,\r\n * registeredID [8] OBJECT IDENTIFIER\r\n * }\r\n */\r\nexport const generalNamesTypeToLocaleKey: LocaleKeysArray = [\r\n 'general-name-other-name',\r\n 'general-name-rfc822-name',\r\n 'general-name-dns-name',\r\n 'general-name-x400-address',\r\n 'general-name-directory-name',\r\n 'general-name-edi-party-name',\r\n 'general-name-uri',\r\n 'general-name-ip-address',\r\n 'general-name-registered-id',\r\n];\r\n\r\n/**\r\n * NOTE: The order of this array matters.\r\n * The indices of the values in the array correspond to their bit place.\r\n *\r\n * From RFC-5280\r\n * KeyUsage ::= BIT STRING {\r\n * digitalSignature (0),\r\n * nonRepudiation (1), -- recent editions of X.509 have\r\n * -- renamed this bit to contentCommitment\r\n * keyEncipherment (2),\r\n * dataEncipherment (3),\r\n * keyAgreement (4),\r\n * keyCertSign (5),\r\n * cRLSign (6),\r\n * encipherOnly (7),\r\n * decipherOnly (8) }\r\n *\r\n * Rules:\r\n * Client-KeyUsage: !({encipherOnly} && {decipherOnly})\r\n * Server-KeyUsage: !({encipherOnly} && {decipherOnly})\r\n * CA-KeyUsage: !({encipherOnly} && {decipherOnly}) && {keyCertSign}\r\n */\r\nexport const keyUsageBitIndexToLocaleKey: LocaleKeysArray = [\r\n 'key-usage-digitalSignature',\r\n 'key-usage-nonRepudiation',\r\n 'key-usage-keyEncipherment',\r\n 'key-usage-dataEncipherment',\r\n 'key-usage-keyAgreement',\r\n 'key-usage-keyCertSign',\r\n 'key-usage-cRLSign',\r\n 'key-usage-encipherOnly',\r\n 'key-usage-decipherOnly',\r\n];\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport {\r\n AppfxLocale,\r\n AppfxTranslations,\r\n DateTimeFormatOptions,\r\n DateTimeKind,\r\n defaultMissingTranslationHandler,\r\n HourFormat,\r\n} from '@hermes-ui/angular/addons/translate';\r\nimport { AttributeTypeAndValue } from 'pkijs';\r\n\r\nimport { AlgorithmName } from './certificate.constants';\r\n\r\nconst pemHeaderRegex = /(-----(BEGIN|END) CERTIFICATE-----|[\\n\\r])/g;\r\nconst whitespaceRegex = new RegExp('\\\\s+', 'g');\r\nconst oidRegex = /^(\\d+\\.)*\\d+$/;\r\n\r\nexport const dateTimeFormat: DateTimeFormatOptions = {\r\n dateTimeKind: DateTimeKind.LongDateTime,\r\n hourFormat: HourFormat.Hour24,\r\n};\r\n\r\nexport function missingTranslation(translations: AppfxTranslations, locale: AppfxLocale, key: string): string {\r\n // Handles unknown OIDs.\r\n if (oidRegex.test(key)) {\r\n return formatOid(key);\r\n }\r\n\r\n // Fallback for unknown key that is not an OID.\r\n return defaultMissingTranslationHandler(translations, locale, key);\r\n}\r\n\r\nexport function formatOid(oid: string): string {\r\n return 'OID.' + oid;\r\n}\r\n\r\nfunction formatHexByte(byte: number): string {\r\n return byte.toString(16).toUpperCase().padStart(2, '0');\r\n}\r\n\r\nfunction formatHexArray(bytes: string[], bytesPerLine = 16): string {\r\n const lines = [];\r\n for (let i = 0; i < bytes.length; i += bytesPerLine) {\r\n lines.push(bytes.slice(i, i + bytesPerLine).join(' '));\r\n }\r\n\r\n return lines.join('\\n');\r\n}\r\n\r\nexport function formatHexString(hexString: string, onSingleLine = false, bytesPerLine = 16): string {\r\n if (hexString.length % 2 === 1) {\r\n console.warn('Trying to format hex string that is not in hex format. Returning the input string.');\r\n return hexString;\r\n }\r\n\r\n const bytes = hexString.toUpperCase().match(/.{2}/g) || [];\r\n if (onSingleLine) {\r\n return bytes.join(' ');\r\n }\r\n\r\n return formatHexArray(bytes, bytesPerLine);\r\n}\r\n\r\nexport function formatHexBuffer(hexBuffer: ArrayBuffer, onSingleLine = false, bytesPerLine = 16): string {\r\n const bytes = Array.from(new Uint8Array(hexBuffer)).map(formatHexByte);\r\n\r\n if (onSingleLine) {\r\n return bytes.join(' ');\r\n }\r\n\r\n return formatHexArray(bytes, bytesPerLine);\r\n}\r\n\r\nexport function pemToBerBuffer(pem: string): ArrayBuffer {\r\n const base64Encoded = pem.replace(pemHeaderRegex, '').replace(whitespaceRegex, '');\r\n\r\n // Now that we have decoded the cert it's now in DER-encoding\r\n const derFormat = atob(base64Encoded);\r\n // And massage the cert into a BER encoded one\r\n return Uint8Array.from(derFormat.split(''), c => c.charCodeAt(0)).buffer as ArrayBuffer;\r\n}\r\n\r\nexport async function computeCertificateHash(algo: AlgorithmName, buffer: ArrayBuffer): Promise<string> {\r\n const hashBuffer = await crypto.subtle.digest(algo, buffer);\r\n return formatHexBuffer(hashBuffer);\r\n}\r\n\r\nexport function pkijsAttributeAndValuesToMap(typesAndValues: AttributeTypeAndValue[]): Map<string, string> {\r\n return new Map(\r\n typesAndValues.map(\r\n ({\r\n type,\r\n value: {\r\n valueBlock: { value },\r\n },\r\n }) => [type, value]\r\n )\r\n );\r\n}\r\n\r\n/**\r\n * Shallow array equals based on their item references.\r\n *\r\n * Implemented here to avoid depending on an external helper library for a couple of functions.\r\n */\r\nexport function arrayElementsEqual<T>(left: T[], right: T[]): boolean {\r\n if (left === right) {\r\n return true;\r\n }\r\n\r\n if (left.length !== right.length) {\r\n return false;\r\n }\r\n\r\n return left.every((element, index) => element === right[index]);\r\n}\r\n\r\n/**\r\n * Filter and map combined over string characters.\r\n *\r\n * Implemented here to avoid depending on an external helper library for a couple of functions.\r\n */\r\nexport function filterMapOverString<U>(\r\n str: string,\r\n callback: (element: string, index: number, arr: string) => NonNullable<U> | null | undefined\r\n): NonNullable<U>[] {\r\n const result = [];\r\n for (let index = 0; index < str.length; index++) {\r\n const value = callback(str.charAt(index), index, str);\r\n if (value !== null && value !== undefined) {\r\n result.push(value);\r\n }\r\n }\r\n return result;\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/member-ordering */\r\n\r\nimport { AppfxTranslateService, DateTimeService, InterpolationParams } from '@hermes-ui/angular/addons/translate';\r\n\r\nimport { dateTimeFormat, formatHexString } from '../certificate.util';\r\n\r\n/**\r\n * A translatable value that can be used as part of the certificate field value.\r\n *\r\n * This allows for flexible translation on parts of the field value after being parsed.\r\n */\r\nexport class TranslatableValue {\r\n constructor(\r\n readonly key: string,\r\n readonly args?: InterpolationParams\r\n ) {}\r\n\r\n /**\r\n * Translate the stored translation key and interpolation arguments.\r\n */\r\n translate(translateService: AppfxTranslateService): string {\r\n if (!this.args) {\r\n return translateService.translate(this.key);\r\n }\r\n\r\n const args = Object.fromEntries(\r\n Object.entries(this.args).map(([key, value]) => [\r\n key,\r\n value instanceof TranslatableValue ? value.translate(translateService) : value,\r\n ])\r\n );\r\n return translateService.translate(this.key, args);\r\n }\r\n}\r\n\r\n/**\r\n * Allowed value types for building the certificate field value.\r\n */\r\nexport type ValueType = undefined | number | string | Date | TranslatableValue;\r\n\r\n/**\r\n * Value wrapper that unifies the nonhomogeneous value types that are part of a single line and handles translation.\r\n */\r\nexport class Value {\r\n constructor(readonly value: ValueType) {}\r\n\r\n /**\r\n * Translate the wrapped value.\r\n */\r\n translate(translateService: AppfxTranslateService, dateTimeService: DateTimeService): string {\r\n if (this.value instanceof TranslatableValue) {\r\n return this.value.translate(translateService);\r\n }\r\n\r\n if (this.value instanceof Date) {\r\n return dateTimeService.format(this.value, dateTimeFormat);\r\n }\r\n\r\n return this.value?.toString() || '';\r\n }\r\n\r\n /**\r\n * Create a new Translatable Value from translation key and interpolation arguments.\r\n *\r\n * This is a helper constructor to simplify common usage.\r\n */\r\n static fromTranslatableKey(key: string, args?: InterpolationParams): Value {\r\n return new Value(new TranslatableValue(key, args));\r\n }\r\n}\r\n\r\n/**\r\n * A line in the certificate field value area.\r\n *\r\n * Every line is made up of Values which can wrap either raw values or Translatable structures.\r\n */\r\nexport class Line {\r\n constructor(readonly values: Value[]) {}\r\n\r\n /**\r\n * Translate and merge the separate values that make up the line.\r\n */\r\n translate(translateService: AppfxTranslateService, dateTimeService: DateTimeService): string {\r\n return this.values.map(value => value.translate(translateService, dateTimeService)).join('');\r\n }\r\n\r\n /**\r\n * Create a new Line from a key-value pair with a given separator.\r\n *\r\n * This is a helper constructor to simplify common usage.\r\n */\r\n static fromPair(key: Value, value: Value, separator: string): Line {\r\n return new Line([key, new Value(separator), value]);\r\n }\r\n\r\n /**\r\n * Create a new Line from an unformatted hex string.\r\n *\r\n * Formats the hex string before creating the Line.\r\n *\r\n * This is a helper constructor to simplify common usage.\r\n *\r\n * @param hex The unformatted hex string that contains an even number of [a-fA-F0-9] characters.\r\n */\r\n static fromHex(hex: string): Line {\r\n return new Line([new Value(formatHexString(hex))]);\r\n }\r\n\r\n /**\r\n * Create a new Line from a translatable key and interpolation arguments.\r\n *\r\n * This is a helper constructor to simplify common usage.\r\n * It's meant to be used if the line contains a single Translatable Value.\r\n */\r\n static fromTranslatableKey(value: string, args?: InterpolationParams): Line {\r\n return new Line([Value.fromTranslatableKey(value, args)]);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/member-ordering */\r\n\r\nimport { AppfxTranslateService, DateTimeService } from '@hermes-ui/angular/addons/translate';\r\nimport { BitString } from 'asn1js';\r\nimport {\r\n AltName,\r\n BasicConstraints,\r\n CertificatePolicies,\r\n CRLDistributionPoints,\r\n Extension,\r\n ExtKeyUsage,\r\n GeneralName,\r\n InfoAccess,\r\n RelativeDistinguishedNames,\r\n} from 'pkijs';\r\n\r\nimport { generalNamesTypeToLocaleKey, keyUsageBitIndexToLocaleKey, KnownOids } from '../certificate.constants';\r\nimport { filterMapOverString, formatHexString, formatOid } from '../certificate.util';\r\nimport { Line, TranslatableValue, Value, ValueType } from './partial-translate.model';\r\n\r\n/**\r\n * A parsed certificate field to be displayed in the certificate fields tree and the value area.\r\n */\r\nexport class CertificateField {\r\n constructor(\r\n readonly name: TranslatableValue | string,\r\n readonly children: CertificateField[] = [],\r\n readonly lines?: Line[]\r\n ) {}\r\n\r\n /**\r\n * Translates the filed name.\r\n */\r\n translateName(translateService: AppfxTranslateService): string {\r\n return this.name instanceof TranslatableValue ? this.name.translate(translateService) : this.name;\r\n }\r\n\r\n /**\r\n * Translates the filed value.\r\n */\r\n translateValue(translateService: AppfxTranslateService, dateTimeService: DateTimeService): string {\r\n return this.lines?.map(value => value.translate(translateService, dateTimeService)).join('\\n') ?? '';\r\n }\r\n\r\n /**\r\n * Create a new CertificateField that has an untranslated valued for its name and children.\r\n *\r\n * A certificate field with children is not expected to have a value.\r\n *\r\n * This is a helper constructor to simplify common usage.\r\n */\r\n static untranslatedNameWithChildren(name: string, children: CertificateField[]): CertificateField {\r\n return new CertificateField(name, children);\r\n }\r\n\r\n /**\r\n * Create a new CertificateField that has a translatable key for its name and children.\r\n *\r\n * A certificate field with children is not expected to have a value.\r\n *\r\n * This is a helper constructor to simplify common usage.\r\n */\r\n static withChildren(translatableKey: string, children: CertificateField[]): CertificateField {\r\n return new CertificateField(new TranslatableValue(translatableKey), children);\r\n }\r\n\r\n /**\r\n * Create a new CertificateField that has a translatable key for its name and a single value.\r\n *\r\n * A certificate field with a value is not expected to have children.\r\n *\r\n * This is a helper constructor to simplify common usage.\r\n */\r\n static withValue(translatableKey: string, value: ValueType): CertificateField {\r\n return new CertificateField(new TranslatableValue(translatableKey), [], [new Line([new Value(value)])]);\r\n }\r\n\r\n /**\r\n * Create a new CertificateField that has a translatable key for its name and a multi-lined value.\r\n *\r\n * A certificate field with a value is not expected to have children.\r\n *\r\n * This is a helper constructor to simplify common usage.\r\n */\r\n static withLines(translatableKey: string, lines: Line[]): CertificateField {\r\n return new CertificateField(new TranslatableValue(translatableKey), [], lines);\r\n }\r\n\r\n /**\r\n * Create a new CertificateField from pkijs's Certificate Extension structure.\r\n *\r\n * This helper constructor simplifies certificate extension parsing by covering the common extensions.\r\n */\r\n static fromExtension(extension: Extension): CertificateField {\r\n switch (extension.extnID) {\r\n case KnownOids.KeyUsage: {\r\n return this.extensionKeyUsage(extension);\r\n }\r\n case KnownOids.ExtendedKeyUsage: {\r\n return this.extensionExtendedKeyUsage(extension);\r\n }\r\n case KnownOids.BasicCertificateConstraints: {\r\n return this.extensionBasicCertificateConstraints(extension);\r\n }\r\n case KnownOids.ExtensionSubjectKeyId: {\r\n return this.extensionKeyId(extension, 4);\r\n }\r\n case KnownOids.ExtensionAuthorityKeyId: {\r\n return this.extensionKeyId(extension, 6);\r\n }\r\n case KnownOids.AuthorityInformationAccess: {\r\n return this.extensionAuthorityInfoAccess(extension);\r\n }\r\n case KnownOids.SubjectAltName: {\r\n const altName: AltName = extension.parsedValue;\r\n return this.fromExtensionWithLines(extension, this.parseGeneralNames(altName.altNames));\r\n }\r\n case KnownOids.CertificatePolicies: {\r\n return this.extensionCertificatePolicies(extension);\r\n }\r\n case KnownOids.CrlDistributionPoints: {\r\n return this.extensionHermesDistributionPoints(extension);\r\n }\r\n }\r\n\r\n return this.fromExtensionWithLines(extension, [Line.fromHex(extension.extnValue.toString('hex'))]);\r\n }\r\n\r\n private static extensionKeyUsage(extension: Extension): CertificateField {\r\n const value = (extension.parsedValue as BitString).valueBlock;\r\n const bits = value.valueHexView.reduce((acc, byte) => acc + byte.toString(2), '').slice(0, -value.unusedBits);\r\n\r\n const lines = filterMapOverString(bits, (bit, index) => (bit === '1' ? index : undefined)).map(index =>\r\n Line.fromTranslatableKey(keyUsageBitIndexToLocaleKey[index])\r\n );\r\n\r\n return this.fromExtensionWithLines(extension, lines);\r\n }\r\n\r\n private static extensionExtendedKeyUsage(extension: Extension): CertificateField {\r\n const keyUsage = extension.parsedValue as ExtKeyUsage;\r\n return this.fromExtensionWithLines(\r\n extension,\r\n keyUsage.keyPurposes.map(purpose =>\r\n Line.fromPair(Value.fromTranslatableKey(purpose), new Value(`(${formatOid(purpose)})`), ' ')\r\n )\r\n );\r\n }\r\n\r\n private static extensionBasicCertificateConstraints(extension: Extension): CertificateField {\r\n const basicConstraints: BasicConstraints = extension.parsedValue;\r\n const lines = [Line.fromTranslatableKey(basicConstraints.cA ? 'is-cert-authority' : 'is-not-cert-authority')];\r\n if (basicConstraints.cA) {\r\n lines.push(\r\n Line.fromTranslatableKey('max-number-intermediate-CAs', {\r\n maxNumber:\r\n // eslint-disable-next-line eqeqeq\r\n basicConstraints.pathLenConstraint == null\r\n ? new TranslatableValue('unlimited')\r\n : basicConstraints.pathLenConstraint.toString(),\r\n })\r\n );\r\n }\r\n return this.fromExtensionWithLines(extension, lines);\r\n }\r\n\r\n private static extensionKeyId(extension: Extension, removeFirstNumberOfBytes: number): CertificateField {\r\n const hex = extension.extnValue.toString('hex').slice(removeFirstNumberOfBytes * 2);\r\n\r\n return this.fromExtensionWithLines(extension, [\r\n Line.fromTranslatableKey('key-id', {\r\n id: formatHexString(hex),\r\n }),\r\n ]);\r\n }\r\n\r\n private static extensionAuthorityInfoAccess(extension: Extension): CertificateField {\r\n const infoAccess: InfoAccess = extension.parsedValue;\r\n const value = infoAccess.accessDescriptions.map(description => {\r\n return new Line([\r\n Value.fromTranslatableKey(description.accessMethod),\r\n new Value(': '),\r\n ...this.translatableGeneralName(description.accessLocation, ': '),\r\n ]);\r\n });\r\n return this.fromExtensionWithLines(extension, value);\r\n }\r\n\r\n private static extensionCertificatePolicies(extension: Extension): CertificateField {\r\n const policies: CertificatePolicies = extension.parsedValue;\r\n const value = policies.certificatePolicies.flatMap(policy => {\r\n return [\r\n Line.fromTranslatableKey(policy.policyIdentifier),\r\n ...(policy.policyQualifiers?.map(qualifier => {\r\n return Line.fromPair(\r\n Value.fromTranslatableKey(qualifier.policyQualifierId),\r\n new Value(qualifier.qualifier.toString()),\r\n ': '\r\n );\r\n }) ?? []),\r\n ];\r\n });\r\n\r\n return this.fromExtensionWithLines(extension, value);\r\n }\r\n\r\n private static extensionHermesDistributionPoints(extension: Extension): CertificateField {\r\n const crlDistPoints: CRLDistributionPoints = extension.parsedValue;\r\n const value = crlDistPoints.distributionPoints.reduce((result, crlDistPoint) => {\r\n if (crlDistPoint.distributionPoint) {\r\n if (crlDistPoint.distributionPoint instanceof RelativeDistinguishedNames) {\r\n const points = crlDistPoint.distributionPoint.typesAndValues.map(typeAndValue => {\r\n return Line.fromPair(new Value(typeAndValue.type), new Value(typeAndValue.value.toString()), ': ');\r\n });\r\n result.push(...points);\r\n } else {\r\n result.push(...this.parseGeneralNames(crlDistPoint.distributionPoint));\r\n }\r\n }\r\n if (crlDistPoint.cRLIssuer) {\r\n result.push(Line.fromTranslatableKey('hermes-issuer'), ...this.parseGeneralNames(crlDistPoint.cRLIssuer));\r\n }\r\n if (crlDistPoint.reasons) {\r\n result.push(Line.fromTranslatableKey('reasons'), new Line([new Value(crlDistPoint.reasons.toString('ascii'))]));\r\n }\r\n\r\n return result;\r\n }, [] as Line[]);\r\n\r\n return this.fromExtensionWithLines(extension, value);\r\n }\r\n\r\n private static fromExtensionWithLines(extension: Extension, lines: Line[]): CertificateField {\r\n const critical = new Line([Value.fromTranslatableKey(extension.critical ? 'critical' : 'not-critical')]);\r\n return this.withLines(extension.extnID, [critical, ...lines]);\r\n }\r\n\r\n private static parseGeneralNames(generalNames: GeneralName[]): Line[] {\r\n return generalNames.map(generalName => {\r\n return new Line(this.translatableGeneralName(generalName, ': '));\r\n });\r\n }\r\n\r\n private static translatableGeneralName(generalName: GeneralName, separator: string): Value[] {\r\n return [\r\n Value.fromTranslatableKey(generalNamesTypeToLocaleKey[generalName.type]),\r\n new Value(separator),\r\n new Value(generalName.value.toString()),\r\n ];\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { fromBER } from 'asn1js';\r\nimport { ECPublicKey, Certificate as PkijsCertificate, RSAPublicKey } from 'pkijs';\r\n\r\nimport { AlgorithmName, KnownOids } from '../certificate.constants';\r\nimport {\r\n computeCertificateHash,\r\n formatHexString,\r\n pemToBerBuffer,\r\n pkijsAttributeAndValuesToMap,\r\n} from '../certificate.util';\r\nimport { CertificateField } from './certificate-field.model';\r\nimport { Line, TranslatableValue, Value } from './partial-translate.model';\r\n\r\n/**\r\n * Contains the Relative Distinguished Names of the subject and issuer in a given certificate.\r\n *\r\n * This structure is to be used in the general section of the certificate viewer and thus doesn't need to contain all of the RDNs.\r\n * Instead we're only interested in the `common name`, `organization` and `organization unit` values.\r\n */\r\nexport class RelativeDistinguishedNamesModel {\r\n constructor(\r\n readonly commonName: string,\r\n readonly organization: string,\r\n readonly organizationalUnit: string\r\n ) {}\r\n\r\n /**\r\n * Create the RDNs model from an OID to value map.\r\n */\r\n static fromMap(map: Map<string, string>): RelativeDistinguishedNamesModel {\r\n return new RelativeDistinguishedNamesModel(\r\n map.get(KnownOids.CommonName) || '',\r\n map.get(KnownOids.Organization) || '',\r\n map.get(KnownOids.OrganizationalUnit) || ''\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Contains the certificate fingerprints.\r\n */\r\nexport interface Fingerprints {\r\n sha1: string;\r\n sha256: string;\r\n}\r\n\r\n/**\r\n * The certificate model used by the certificate viewer.\r\n *\r\n * Contains all the information necessary for presenting the certificate to the user. This includes:\r\n * - The SHA1 and SHA256 fingerprints.\r\n * - The subject and issuer RDNs.\r\n * - The common certificate fields which are parsed and localized while the rest are presented as OIDs with hex values.\r\n * - The raw pkijs model.\r\n */\r\nexport class Certificate {\r\n /**\r\n * The root of the parsed certificate fields tree.\r\n *\r\n * Meant to be rendered with a tree component.\r\n */\r\n readonly rootField: CertificateField;\r\n\r\n /**\r\n * The certificate issuer RDNs.\r\n */\r\n readonly issuer: RelativeDistinguishedNamesModel;\r\n\r\n /**\r\n * The certificate subject RDNs.\r\n */\r\n readonly subject: RelativeDistinguishedNamesModel;\r\n\r\n /**\r\n * @param certificate The pkijs Certificate model.\r\n * @param fingerprints The SHA-1 and SHA-256 fingerprints of the certificate.\r\n */\r\n private constructor(\r\n readonly certificate: PkijsCertificate,\r\n readonly fingerprints: Fingerprints\r\n ) {\r\n this.issuer = Certificate.issuerRdns(certificate);\r\n this.subject = Certificate.subjectRdns(certificate);\r\n\r\n this.rootField = this.buildFieldsTree();\r\n }\r\n\r\n /**\r\n * Create a new CertificateModel form a PEM encoded certificate.\r\n *\r\n * The asn1js and pkijs libraries are used in combination to parse the PEM encoded certificate.\r\n */\r\n static async fromPemEncodedCertificate(certificatePem: string): Promise<Certificate> {\r\n const berFormat = pemToBerBuffer(certificatePem);\r\n const fingerprints = await Certificate.computeFingerprints(berFormat);\r\n\r\n const asn1 = fromBER(berFormat);\r\n\r\n const certificate = new PkijsCertificate({ schema: asn1.result });\r\n\r\n return new Certificate(certificate, fingerprints);\r\n }\r\n\r\n /**\r\n * Computes the SHA1 and SHA256 fingerprints\r\n */\r\n private static async computeFingerprints(berEncodedCert: ArrayBuffer): Promise<Fingerprints> {\r\n return Promise.all([\r\n computeCertificateHash(AlgorithmName.sha1, berEncodedCert),\r\n computeCertificateHash(AlgorithmName.sha256, berEncodedCert),\r\n ]).then(([sha1, sha256]) => ({ sha1, sha256 }));\r\n }\r\n\r\n private static issuerRdns(certificate: PkijsCertificate): RelativeDistinguishedNamesModel {\r\n const map = pkijsAttributeAndValuesToMap(certificate.issuer.typesAndValues);\r\n return RelativeDistinguishedNamesModel.fromMap(map);\r\n }\r\n\r\n private static subjectRdns(certificate: PkijsCertificate): RelativeDistinguishedNamesModel {\r\n const map = pkijsAttributeAndValuesToMap(certificate.subject.typesAndValues);\r\n return RelativeDistinguishedNamesModel.fromMap(map);\r\n }\r\n\r\n private buildFieldsTree(): CertificateField {\r\n const children = [\r\n this.fieldVersion(),\r\n this.fieldValidity(),\r\n this.fieldSerialNumber(),\r\n this.fieldIssuer(),\r\n this.fieldSubject(),\r\n this.fieldSignatureAlgorithm(),\r\n this.fieldSignatureValue(),\r\n this.fieldFingerprints(),\r\n this.fieldSubjectPublicKeyInfo(),\r\n ];\r\n const extensions = this.extensions();\r\n if (extensions) {\r\n children.push(extensions);\r\n }\r\n return CertificateField.untranslatedNameWithChildren(this.subject.commonName, children);\r\n }\r\n\r\n private fieldVersion(): CertificateField {\r\n return CertificateField.withValue(\r\n 'version',\r\n new TranslatableValue('version-format', {\r\n version: this.certificate.version + 1,\r\n })\r\n );\r\n }\r\n\r\n private fieldValidity(): CertificateField {\r\n const notBefore = CertificateField.withValue('not-before', this.certificate.notBefore.value);\r\n const notAfter = CertificateField.withValue('not-after', this.certificate.notAfter.value);\r\n\r\n return CertificateField.withChildren('validity', [notBefore, notAfter]);\r\n }\r\n\r\n private fieldSerialNumber(): CertificateField {\r\n return CertificateField.withValue(\r\n 'serial-number',\r\n formatHexString(this.certificate.serialNumber.toString('hex').slice(4), true)\r\n );\r\n }\r\n\r\n private fieldIssuer(): CertificateField {\r\n const lines = this.certificate.issuer.typesAndValues.map(typeAndValue => {\r\n return Line.fromPair(\r\n Value.fromTranslatableKey(typeAndValue.type),\r\n new Value(typeAndValue.value.valueBlock.value),\r\n ' = '\r\n );\r\n });\r\n\r\n return CertificateField.withLines('issuer', lines);\r\n }\r\n\r\n private fieldSubject(): CertificateField {\r\n const lines = this.certificate.subject.typesAndValues.map(typeAndValue => {\r\n return Line.fromPair(\r\n Value.fromTranslatableKey(typeAndValue.type),\r\n new Value(typeAndValue.value.valueBlock.value),\r\n ' = '\r\n );\r\n });\r\n\r\n return CertificateField.withLines('subject', lines);\r\n }\r\n\r\n private fieldSignatureAlgorithm(): CertificateField {\r\n return CertificateField.withValue(\r\n 'certificate-signature-algorithm',\r\n new TranslatableValue(this.certificate.signatureAlgorithm.algorithmId)\r\n );\r\n }\r\n\r\n private fieldSignatureValue(): CertificateField {\r\n return CertificateField.withValue(\r\n 'certificate-signature-value',\r\n formatHexString(this.certificate.signatureValue.toString('hex').slice(10))\r\n );\r\n }\r\n\r\n private fieldFingerprints(): CertificateField {\r\n const sha1Fp = CertificateField.withValue('sha-1-fingerprint', this.fingerprints.sha1);\r\n const sha256Fp = CertificateField.withValue('sha-256-fingerprint', this.fingerprints.sha256);\r\n\r\n return CertificateField.withChildren('fingerprints', [sha1Fp, sha256Fp]);\r\n }\r\n\r\n private fieldSubjectPublicKeyInfo(): CertificateField {\r\n const subjPubKeyAlg = CertificateField.withValue(\r\n 'subject-public-key-algorithm',\r\n new TranslatableValue(this.certificate.subjectPublicKeyInfo.algorithm.algorithmId)\r\n );\r\n const subjPubKey = CertificateField.withLines('subjects-public-key', this.subfieldSubjectPublicKeyValue());\r\n\r\n return CertificateField.withChildren('subject-public-key-info', [subjPubKeyAlg, subjPubKey]);\r\n }\r\n\r\n private subfieldSubjectPublicKeyValue(): Line[] {\r\n const parsedPubKey = this.certificate.subjectPublicKeyInfo.parsedKey;\r\n\r\n if (parsedPubKey instanceof RSAPublicKey) {\r\n const modulusView = parsedPubKey.modulus.valueBlock.valueHexView;\r\n const modulusBitLength =\r\n modulusView[0] === 0x00\r\n ? (parsedPubKey.modulus.valueBlock.valueHexView.byteLength - 1) * 8\r\n : parsedPubKey.modulus.valueBlock.valueHexView.byteLength * 8;\r\n\r\n // RSA public key consists of modulus and exponent.\r\n return [\r\n Line.fromTranslatableKey('modulus-bits', {\r\n bits: modulusBitLength.toString(),\r\n }),\r\n Line.fromHex(parsedPubKey.modulus.toString('hex').slice(8)),\r\n Line.fromTranslatableKey('public-exponent'),\r\n Line.fromHex(parsedPubKey.publicExponent.toString('hex').slice(4)),\r\n ];\r\n } else if (parsedPubKey instanceof ECPublicKey) {\r\n return [\r\n Line.fromTranslatableKey('named-curve', {\r\n curve: parsedPubKey.namedCurve,\r\n }),\r\n Line.fromHex(parsedPubKey.toString('hex')),\r\n ];\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n private extensions(): CertificateField | undefined {\r\n if (!this.certificate.extensions) {\r\n return undefined;\r\n }\r\n\r\n return CertificateField.withChildren(\r\n 'extensions',\r\n this.certificate.extensions.map(extension => CertificateField.fromExtension(extension))\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/member-ordering */\r\nimport { Certificate } from './certificate.model';\r\n\r\n/**\r\n * Contains a certificate chain and provides convenient methods for accessing the common certificates of interest.\r\n *\r\n * This is linear model which is meant to be displayed in a tree structure and thus contains methods for interacting with Clarity's tree.\r\n */\r\nexport class CertificateChain {\r\n /**\r\n * Used to resolve the next certificate in the chain beginning with the root certificate.\r\n */\r\n private readonly nextCertificateMap: Map<Certificate, Certificate | undefined>;\r\n\r\n /**\r\n * @param chain The parsed certificate chain.\r\n */\r\n private constructor(readonly chain: Certificate[]) {\r\n this.nextCertificateMap = new Map(\r\n chain\r\n .slice()\r\n .reverse()\r\n .map((cert, index, arr) => [cert, arr[index + 1]])\r\n );\r\n }\r\n\r\n /**\r\n * Create a new CertificateChainModel from a PEM encoded certificate chain.\r\n *\r\n * @param pemEncodedCertificates The certificate chain where each certificate is a PEM encoded string.\r\n * It begins with the leaf certificate as the first element and ends with the root certificate.\r\n */\r\n static async fromPemEncodedCertificatesChain(pemEncodedCertificates: string[]): Promise<CertificateChain> {\r\n // The certificates order must be preserved but they don't need to be parsed synchronously relative to each other.\r\n const chain = await Promise.all(pemEncodedCertificates.map(Certificate.fromPemEncodedCertificate));\r\n\r\n return new CertificateChain(chain);\r\n }\r\n\r\n /**\r\n * Retrieve the root certificate in the chain.\r\n */\r\n get rootCertificate(): Certificate | undefined {\r\n return this.chain[this.chain.length - 1];\r\n }\r\n\r\n /**\r\n * Retrieve the leaf certificate in the chain.\r\n */\r\n get leafCertificate(): Certificate | undefined {\r\n return this.chain[0];\r\n }\r\n\r\n /**\r\n * Resolve the next certificate in the chain beginning with the root certificate.\r\n *\r\n * This method is used by the certificate details tree which begins with the root certificate in the chain.\r\n *\r\n * Confusion may arise here since the RFC-5246 certificate chain array begins with the leaf certificate and ends with the root certificate\r\n * but the tree renders it in reverse order which is more intuitive to the user.\r\n */\r\n nextCertificateInChain(certificate?: Certificate): Certificate | undefined {\r\n return certificate && this.nextCertificateMap.get(certificate);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { AppfxTranslateService, DateTimeService } from '@hermes-ui/angular/addons/translate';\r\n\r\nimport { CertificateField } from '../models/certificate-field.model';\r\n\r\n@Pipe({\r\n name: 'translateField',\r\n standalone: false,\r\n pure: false,\r\n})\r\nexport class CertificateViewerTranslateFieldPipe implements PipeTransform {\r\n constructor(\r\n private readonly appfxTranslateService: AppfxTranslateService,\r\n private readonly dateTimeService: DateTimeService\r\n ) {}\r\n\r\n transform(field: CertificateField | undefined, prop: 'name' | 'value'): string {\r\n if (!field) {\r\n return '';\r\n }\r\n\r\n switch (prop) {\r\n case 'name': {\r\n return field.translateName(this.appfxTranslateService);\r\n }\r\n case 'value': {\r\n return field.translateValue(this.appfxTranslateService, this.dateTimeService);\r\n }\r\n default: {\r\n throw new Error('Invalid certificate field property');\r\n }\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, Input, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';\r\n\r\nimport { CertificateChain } from '../models/certificate-chain.model';\r\nimport { CertificateField } from '../models/certificate-field.model';\r\nimport { Certificate } from '../models/certificate.model';\r\nimport { TopHeadingLevel } from '../models/heading-level.model';\r\n\r\n/**\r\n * The details section of the certificate viewer.\r\n *\r\n * This section allows for exploring the provided certificate chain. It's comprised of a certificate chain tree,\r\n * a selected certificate fields tree and a selected field value.\r\n *\r\n * - The certificate chain tree is a linear tree that represents the certificate chain hierarchy.\r\n * Selecting a node in this tree populates the fields tree with their respective values.\r\n * - The fields tree is an explorer for all of the selected certificate fields. The most commonly used fields are\r\n * localized and their values are converted to a human-readable format.\r\n * - The field value is a monospace area that contains the value of the selected field from the fields tree.\r\n */\r\n@Component({\r\n selector: 'appfx-certificate-viewer-details',\r\n standalone: false,\r\n templateUrl: 'certificate-viewer-details.component.html',\r\n styleUrls: ['certificate-viewer-details.component.scss'],\r\n})\r\nexport class CertificateViewerDetailsComponent implements OnChanges {\r\n @Input() certificateChain?: CertificateChain;\r\n @Input() topHeadingLevel: TopHeadingLevel = 5;\r\n @Input() headingTemplate: TemplateRef<unknown>;\r\n\r\n selectedCertificate?: Certificate;\r\n selectedCertificateField?: CertificateField;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.certificateChain) {\r\n const currentValue = changes.certificateChain.currentValue as CertificateChain | undefined;\r\n this.selectCertificate(currentValue?.leafCertificate);\r\n }\r\n }\r\n\r\n selectCertificate(certificate?: Certificate) {\r\n if (this.selectedCertificate !== certificate) {\r\n this.selectedCertificateField = undefined;\r\n }\r\n this.selectedCertificate = certificate;\r\n }\r\n\r\n selectCertificateField(certificateField?: CertificateField) {\r\n this.selectedCertificateField = certificateField;\r\n }\r\n\r\n isSelected(certificate?: Certificate): boolean {\r\n return certificate === this.selectedCertificate;\r\n }\r\n\r\n isSelectedField(certificateField?: CertificateField): boolean {\r\n return certificateField === this.selectedCertificateField;\r\n }\r\n\r\n getNextCertificate = (certificate?: Certificate): Certificate[] => {\r\n const next = this.certificateChain?.nextCertificateInChain(certificate);\r\n return next ? [next] : [];\r\n };\r\n\r\n getFieldsChildren = (certificateField?: CertificateField): CertificateField[] => {\r\n return certificateField?.children ?? [];\r\n };\r\n}\r\n","<!--\r\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n ~ This software is released under MIT license.\r\n ~ The full license information can be found in LICENSE in the root directory of this project.\r\n -->\r\n<section class=\"certificate-chain\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headingTemplate;\r\n context: {\r\n level: topHeadingLevel + 1,\r\n textContent: 'certificate-hierarchy' | translate,\r\n class: 'certificate-viewer-details-subtitle',\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n\r\n <hermes-tree class=\"content\">\r\n <hermes-tree-node\r\n *hermesRecursiveFor=\"let certificate of certificateChain?.rootCertificate; getChildren: getNextCertificate\"\r\n [hermesExpanded]=\"true\"\r\n >\r\n <button\r\n class=\"hermes-treenode-link\"\r\n [class.active]=\"isSelected(certificate)\"\r\n (click)=\"selectCertificate(certificate)\"\r\n tabindex=\"-1\"\r\n >\r\n {{ certificate?.subject.commonName }}\r\n </button>\r\n </hermes-tree-node>\r\n </hermes-tree>\r\n</section>\r\n\r\n<section class=\"fields\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headingTemplate;\r\n context: {\r\n level: topHeadingLevel + 1,\r\n textContent: 'certificate-fields' | translate,\r\n class: 'certificate-viewer-details-subtitle',\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n\r\n <hermes-tree class=\"content\">\r\n <hermes-tree-node\r\n *hermesRecursiveFor=\"let field of this.selectedCertificate?.rootField; getChildren: getFieldsChildren\"\r\n [hermesExpanded]=\"true\"\r\n >\r\n <button\r\n class=\"hermes-treenode-link\"\r\n [class.active]=\"isSelectedField(field)\"\r\n (click)=\"selectCertificateField(field)\"\r\n tabindex=\"-1\"\r\n >\r\n {{ field | translateField: 'name' }}\r\n </button>\r\n </hermes-tree-node>\r\n </hermes-tree>\r\n</section>\r\n\r\n<section class=\"value\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headingTemplate;\r\n context: {\r\n level: topHeadingLevel + 1,\r\n textContent: 'field-value' | translate,\r\n class: 'certificate-viewer-details-subtitle',\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n\r\n <pre class=\"content\">{{ selectedCertificateField | translateField: 'value' }}</pre>\r\n</section>\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, Input, TemplateRef } from '@angular/core';\r\nimport { DateTimeFormatOptions } from '@hermes-ui/angular/addons/translate';\r\n\r\nimport { KnownOids } from '../certificate.constants';\r\nimport { dateTimeFormat } from '../certificate.util';\r\nimport { Certificate } from '../models/certificate.model';\r\nimport { TopHeadingLevel } from '../models/heading-level.model';\r\n\r\n/**\r\n * The general section of the certificate viewer.\r\n *\r\n * This section contains the leaf certificate's:\r\n * 1. Subject (Issuer To) and Issuer (Issuer By) common RDNs:\r\n * - Common Name\r\n * - Organization\r\n * - Organization Unit\r\n * 2. Validity period\r\n * 3. Fingerprints (SHA-1 and SHA-256)\r\n */\r\n@Component({\r\n selector: 'appfx-certificate-viewer-general',\r\n standalone: false,\r\n templateUrl: 'certificate-viewer-general.component.html',\r\n styleUrls: ['certificate-viewer-general.component.scss'],\r\n})\r\nexport class CertificateViewerGeneralComponent {\r\n readonly KnownOids = KnownOids;\r\n readonly dateTimeFormat: DateTimeFormatOptions = dateTimeFormat;\r\n\r\n @Input() certificate?: Certificate;\r\n @Input() topHeadingLevel: TopHeadingLevel = 5;\r\n @Input() headingTemplate: TemplateRef<unknown>;\r\n}\r\n","<!--\r\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n ~ This software is released under MIT license.\r\n ~ The full license information can be found in LICENSE in the root directory of this project.\r\n -->\r\n<section>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headingTemplate;\r\n context: {\r\n level: topHeadingLevel + 1,\r\n textContent: 'issued-to' | translate,\r\n class: 'certificate-viewer-general-subtitle',\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"relativeDistinguishedNames; context: { certificate: certificate?.subject }\"\r\n ></ng-container>\r\n</section>\r\n\r\n<section>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headingTemplate;\r\n context: {\r\n level: topHeadingLevel + 1,\r\n textContent: 'issued-by' | translate,\r\n class: 'certificate-viewer-general-subtitle',\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"relativeDistinguishedNames; context: { certificate: certificate?.issuer }\"\r\n ></ng-container>\r\n</section>\r\n\r\n<section>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headingTemplate;\r\n context: {\r\n level: topHeadingLevel + 1,\r\n textContent: 'validity-period' | translate,\r\n class: 'certificate-viewer-general-subtitle',\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n\r\n <dl class=\"key-value\">\r\n <dt>{{ 'issued-on' | translate }}</dt>\r\n <dd id=\"issue-date\">\r\n {{ certificate?.certificate?.notBefore?.value | dateTime: dateTimeFormat }}\r\n </dd>\r\n </dl>\r\n <dl class=\"key-value\">\r\n <dt>{{ 'expires-on' | translate }}</dt>\r\n <dd id=\"expiry-date\">\r\n {{ certificate?.certificate?.notAfter?.value | dateTime: dateTimeFormat }}\r\n </dd>\r\n </dl>\r\n</section>\r\n\r\n<section class=\"fingerprints\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headingTemplate;\r\n context: {\r\n level: topHeadingLevel + 1,\r\n textContent: 'fingerprints' | translate,\r\n class: 'certificate-viewer-general-subtitle',\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n\r\n <dl class=\"key-value\">\r\n <dt>{{ 'sha-256-fingerprint' | translate }}</dt>\r\n <dd class=\"pre-wrap\">{{ certificate?.fingerprints?.sha256 }}</dd>\r\n </dl>\r\n <dl class=\"key-value\">\r\n <dt>{{ 'sha-1-fingerprint' | translate }}</dt>\r\n <dd class=\"pre-wrap\">{{ certificate?.fingerprints?.sha1 }}</dd>\r\n </dl>\r\n</section>\r\n\r\n<ng-template #relativeDistinguishedNames let-certificate=\"certificate\">\r\n <dl class=\"key-value\">\r\n <dt>{{ KnownOids.CommonName | translate }}</dt>\r\n <dd id=\"issued-cn\">\r\n {{ certificate?.commonName || ('not-part-of-certificate' | translate) }}\r\n </dd>\r\n </dl>\r\n <dl class=\"key-value\">\r\n <dt>{{ KnownOids.Organization | translate }}</dt>\r\n <dd id=\"issued-o\">\r\n {{ certificate?.organization || ('not-part-of-certificate' | translate) }}\r\n </dd>\r\n </dl>\r\n <dl class=\"key-value\">\r\n <dt>{{ KnownOids.OrganizationalUnit | translate }}</dt>\r\n <dd id=\"issued-ou\">\r\n {{ certificate?.organizationalUnit || ('not-part-of-certificate' | translate) }}\r\n </dd>\r\n </dl>\r\n</ng-template>\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { ChangeDetectorRef, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { appfxMissingTranslationToken, AppfxTranslateService, appfxTranslationsToken } from '@hermes-ui/angular/addons/translate';\r\n\r\nimport { translations } from '../certificate-viewer.l10n';\r\nimport { KnownOids } from '../certificate.constants';\r\nimport { arrayElementsEqual, missingTranslation } from '../certificate.util';\r\nimport { CertificateChain } from '../models/certificate-chain.model';\r\nimport { TopHeadingLevel } from '../models/heading-level.model';\r\n\r\n/**\r\n * Displays detailed information about a X.509 certificate chain.\r\n *\r\n * The component renders information for a PEM encoded certificate chain in two separate sections.\r\n * 1. The former is the general tab which contains common information for the leaf certificate\r\n * like validity, subject, issuer and fingerprints.\r\n * 2. The latter is the details tab contains the whole certificate chain with each individual\r\n * certificate's fields and their corresponding values. The most common fields are presented\r\n * in a localized human readable format. The rest of the fields are presented as PKI object\r\n * identifiers (OIDs) and their values are rendered as a formatted hex string.\r\n *\r\n * @example <caption>A certificate chain</caption>\r\n * ```html\r\n * <appfx-certificate-viewer [pemEncodedCertificatesChain]=\"pemEncodedCertificatesChain\">\r\n * </appfx-certificate-viewer>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'appfx-certificate-viewer',\r\n standalone: false,\r\n templateUrl: 'certificate-viewer.component.html',\r\n styleUrls: ['certificate-viewer.component.scss'],\r\n providers: [\r\n AppfxTranslateService,\r\n { provide: appfxMissingTranslationToken, useValue: missingTranslation },\r\n { provide: appfxTranslationsToken, useValue: translations },\r\n ],\r\n})\r\nexport class CertificateViewerComponent implements OnChanges {\r\n readonly KnownOids = KnownOids;\r\n\r\n /**\r\n * Accepts a certificate chain where each certificate is PEM encoded.\r\n * The first element is the leaf certificate and the last element is the root certificate.\r\n * This order is described in the TLS 1.2 RFC section 7.4.2.\r\n */\r\n @Input() pemEncodedCertificatesChain: string[];\r\n\r\n /**\r\n * The top heading level for this component.\r\n * All nested headings are incremented automatically. Use to satisfy WCAG heading hierarchy.\r\n */\r\n @Input() topHeadingLevel: TopHeadingLevel = 5;\r\n\r\n certificateChain?: CertificateChain;\r\n parseError?: string;\r\n loading = false;\r\n\r\n private certificateChainPromise?: Promise<CertificateChain>;\r\n\r\n constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['pemEncodedCertificatesChain']) {\r\n const change = changes['pemEncodedCertificatesChain'];\r\n const current = change.currentValue;\r\n const previous = change.previousValue;\r\n\r\n if (\r\n !change.isFirstChange() &&\r\n (!Array.isArray(current) || (Array.isArray(previous) && arrayElementsEqual(current, previous)))\r\n ) {\r\n return;\r\n }\r\n\r\n this.parseCertificateChain();\r\n }\r\n }\r\n\r\n private parseCertificateChain(): void {\r\n this.loading = true;\r\n this.certificateChain = undefined;\r\n this.parseError = undefined;\r\n\r\n const promise = CertificateChain.fromPemEncodedCertificatesChain(this.pemEncodedCertificatesChain);\r\n this.certificateChainPromise = promise;\r\n promise\r\n .then(result => {\r\n if (this.certificateChainPromise === promise) {\r\n this.certificateChain = result;\r\n }\r\n })\r\n .catch((err: unknown) => {\r\n if (this.certificateChainPromise === promise) {\r\n this.parseError = err instanceof Error ? err.message : String(err);\r\n }\r\n })\r\n .finally(() => {\r\n if (this.certificateChainPromise === promise) {\r\n this.loading = false;\r\n this.cdr.markForCheck();\r\n }\r\n });\r\n }\r\n}\r\n","<!--\r\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n ~ This software is released under MIT license.\r\n ~ The full license information can be found in LICENSE in the root directory of this project.\r\n -->\r\n<hermes-spinner *ngIf=\"loading; else loaded\">{{ 'loading' | translate }}</hermes-spinner>\r\n<ng-template #loaded>\r\n <hermes-alert *ngIf=\"parseError\" hermesAlertType=\"danger\" [hermesAlertClosable]=\"false\">\r\n <hermes-alert-item\r\n ><span class=\"alert-text\">{{ parseError }}</span></hermes-alert-item\r\n >\r\n </hermes-alert>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n heading;\r\n context: {\r\n level: topHeadingLevel,\r\n textContent:\r\n 'title'\r\n | translate\r\n : {\r\n title: certificateChain?.leafCertificate?.subject?.commonName,\r\n },\r\n class: 'certificate-viewer-title',\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n\r\n <hermes-tabs>\r\n <hermes-tab>\r\n <button hermesTabLink>{{ 'general' | translate }}</button>\r\n <hermes-tab-content *hermesIfActive>\r\n <appfx-certificate-viewer-general\r\n [certificate]=\"certificateChain?.leafCertificate\"\r\n [topHeadingLevel]=\"topHeadingLevel\"\r\n [headingTemplate]=\"heading\"\r\n >\r\n </appfx-certificate-viewer-general>\r\n </hermes-tab-content>\r\n </hermes-tab>\r\n\r\n <hermes-tab>\r\n <button hermesTabLink>{{ 'details' | translate }}</button>\r\n <hermes-tab-content *hermesIfActive>\r\n <appfx-certificate-viewer-details\r\n [certificateChain]=\"certificateChain\"\r\n [topHeadingLevel]=\"topHeadingLevel\"\r\n [headingTemplate]=\"heading\"\r\n >\r\n </appfx-certificate-viewer-details>\r\n </hermes-tab-content>\r\n </hermes-tab>\r\n </hermes-tabs>\r\n</ng-template>\r\n\r\n<ng-template #heading let-level=\"level\" let-textContent=\"textContent\" let-class=\"class\">\r\n <ng-container [ngSwitch]=\"level\">\r\n <h1 *ngSwitchCase=\"1\" [ngClass]=\"class\">{{ textContent }}</h1>\r\n <h2 *ngSwitchCase=\"2\" [ngClass]=\"class\">{{ textContent }}</h2>\r\n <h3 *ngSwitchCase=\"3\" [ngClass]=\"class\">{{ textContent }}</h3>\r\n <h4 *ngSwitchCase=\"4\" [ngClass]=\"class\">{{ textContent }}</h4>\r\n <h5 *ngSwitchCase=\"5\" [ngClass]=\"class\">{{ textContent }}</h5>\r\n <h6 *ngSwitchCase=\"6\" [ngClass]=\"class\">{{ textContent }}</h6>\r\n <div *ngSwitchDefault role=\"heading\" [attr.aria-level]=\"level\" [ngClass]=\"class\">{{ textContent }}</div>\r\n </ng-container>\r\n</ng-template>\r\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AppfxTranslateModule } from '@hermes-ui/angular/addons/translate';\nimport {\n angleIcon,\n HermesIcons,\n HermesAlertModule,\n HermesSpinnerModule,\n HermesTabsModule,\n HermesTreeViewModule,\n} from '@hermes-ui/angular';\n\nimport { CertificateViewerComponent } from './certificate-viewer/certificate-viewer.component';\nimport { CertificateViewerDetailsComponent } from './certificate-viewer-details/certificate-viewer-details.component';\nimport { CertificateViewerGeneralComponent } from './certificate-viewer-general/certificate-viewer-general.component';\nimport { CertificateViewerTranslateFieldPipe } from './certificate-viewer-translate-field/certificate-viewer-translate-field.pipe';\n\n@NgModule({\n imports: [\n AppfxTranslateModule,\n HermesAlertModule,\n HermesSpinnerModule,\n HermesTabsModule,\n HermesTreeViewModule,\n CommonModule,\n RouterModule,\n ],\n declarations: [\n CertificateViewerComponent,\n CertificateViewerDetailsComponent,\n CertificateViewerGeneralComponent,\n CertificateViewerTranslateFieldPipe,\n ],\n exports: [CertificateViewerComponent],\n})\nexport class AppfxCertificateViewerModule {\n constructor() {\n HermesIcons.addIcons(angleIcon);\n }\n}\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { AppfxCertificateViewerModule } from './certificate-viewer.module';\r\nexport {\r\n /**\r\n * @deprecated Use AppfxCertificateViewerModule import instead.\r\n */\r\n AppfxCertificateViewerModule as CertificateViewerModule,\r\n} from './certificate-viewer.module';\r\nexport { CertificateViewerComponent } from './certificate-viewer/certificate-viewer.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["PkijsCertificate","i1","i2","i3","i4.CertificateViewerTranslateFieldPipe","i4.CertificateViewerDetailsComponent","i5.CertificateViewerGeneralComponent","i6"],"mappings":"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"}
|