| 
									
										
										
										
											2016-05-18 05:38:18 +08:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2016-05-24 03:02:34 +08:00
										 |  |  |  * Generated by util/mkerr.pl DO NOT EDIT | 
					
						
							| 
									
										
										
										
											2021-04-28 16:54:57 +08:00
										 |  |  |  * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. | 
					
						
							| 
									
										
										
										
											2008-03-13 05:14:28 +08:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2018-12-06 20:32:50 +08:00
										 |  |  |  * Licensed under the Apache License 2.0 (the "License").  You may not use | 
					
						
							| 
									
										
										
										
											2016-05-18 05:38:18 +08:00
										 |  |  |  * this file except in compliance with the License.  You can obtain a copy | 
					
						
							|  |  |  |  * in the file LICENSE in the source distribution or at | 
					
						
							|  |  |  |  * https://www.openssl.org/source/license.html
 | 
					
						
							| 
									
										
										
										
											2008-03-13 05:14:28 +08:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <openssl/err.h>
 | 
					
						
							| 
									
										
										
										
											2017-06-08 03:12:03 +08:00
										 |  |  | #include <openssl/cmserr.h>
 | 
					
						
							| 
									
										
										
										
											2020-11-12 17:36:47 +08:00
										 |  |  | #include "crypto/cmserr.h"
 | 
					
						
							| 
									
										
										
										
											2008-03-13 05:14:28 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-12 17:36:47 +08:00
										 |  |  | #ifndef OPENSSL_NO_CMS
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # ifndef OPENSSL_NO_ERR
 | 
					
						
							| 
									
										
										
										
											2008-03-13 05:14:28 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-08 03:12:03 +08:00
										 |  |  | static const ERR_STRING_DATA CMS_str_reasons[] = { | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_ADD_SIGNER_ERROR), "add signer error"}, | 
					
						
							| 
									
										
										
										
											2019-06-03 13:19:48 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_ATTRIBUTE_ERROR), "attribute error"}, | 
					
						
							| 
									
										
										
										
											2017-06-08 03:12:03 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CERTIFICATE_ALREADY_PRESENT), | 
					
						
							|  |  |  |     "certificate already present"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CERTIFICATE_HAS_NO_KEYID), | 
					
						
							|  |  |  |     "certificate has no keyid"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CERTIFICATE_VERIFY_ERROR), | 
					
						
							|  |  |  |     "certificate verify error"}, | 
					
						
							| 
									
										
										
										
											2020-09-07 02:11:34 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CIPHER_AEAD_SET_TAG_ERROR), | 
					
						
							|  |  |  |     "cipher aead set tag error"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CIPHER_GET_TAG), "cipher get tag"}, | 
					
						
							| 
									
										
										
										
											2017-06-08 03:12:03 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CIPHER_INITIALISATION_ERROR), | 
					
						
							|  |  |  |     "cipher initialisation error"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR), | 
					
						
							|  |  |  |     "cipher parameter initialisation error"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CMS_DATAFINAL_ERROR), | 
					
						
							|  |  |  |     "cms datafinal error"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CMS_LIB), "cms lib"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CONTENTIDENTIFIER_MISMATCH), | 
					
						
							|  |  |  |     "contentidentifier mismatch"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CONTENT_NOT_FOUND), "content not found"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CONTENT_TYPE_MISMATCH), | 
					
						
							|  |  |  |     "content type mismatch"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CONTENT_TYPE_NOT_COMPRESSED_DATA), | 
					
						
							|  |  |  |     "content type not compressed data"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA), | 
					
						
							|  |  |  |     "content type not enveloped data"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CONTENT_TYPE_NOT_SIGNED_DATA), | 
					
						
							|  |  |  |     "content type not signed data"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CONTENT_VERIFY_ERROR), | 
					
						
							|  |  |  |     "content verify error"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CTRL_ERROR), "ctrl error"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_CTRL_FAILURE), "ctrl failure"}, | 
					
						
							| 
									
										
										
										
											2020-10-06 23:02:43 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_DECODE_ERROR), "decode error"}, | 
					
						
							| 
									
										
										
										
											2017-06-08 03:12:03 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_DECRYPT_ERROR), "decrypt error"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_ERROR_GETTING_PUBLIC_KEY), | 
					
						
							|  |  |  |     "error getting public key"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_ERROR_READING_MESSAGEDIGEST_ATTRIBUTE), | 
					
						
							|  |  |  |     "error reading messagedigest attribute"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_ERROR_SETTING_KEY), "error setting key"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_ERROR_SETTING_RECIPIENTINFO), | 
					
						
							|  |  |  |     "error setting recipientinfo"}, | 
					
						
							| 
									
										
										
										
											2019-06-13 01:52:39 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_ESS_SIGNING_CERTID_MISMATCH_ERROR), | 
					
						
							|  |  |  |     "ess signing certid mismatch error"}, | 
					
						
							| 
									
										
										
										
											2017-06-08 03:12:03 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_INVALID_ENCRYPTED_KEY_LENGTH), | 
					
						
							|  |  |  |     "invalid encrypted key length"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_INVALID_KEY_ENCRYPTION_PARAMETER), | 
					
						
							|  |  |  |     "invalid key encryption parameter"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_INVALID_KEY_LENGTH), "invalid key length"}, | 
					
						
							| 
									
										
										
										
											2020-10-06 23:02:43 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_INVALID_LABEL), "invalid label"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_INVALID_OAEP_PARAMETERS), | 
					
						
							|  |  |  |     "invalid oaep parameters"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_KDF_PARAMETER_ERROR), | 
					
						
							|  |  |  |     "kdf parameter error"}, | 
					
						
							| 
									
										
										
										
											2017-06-08 03:12:03 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_MD_BIO_INIT_ERROR), "md bio init error"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH), | 
					
						
							|  |  |  |     "messagedigest attribute wrong length"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_MESSAGEDIGEST_WRONG_LENGTH), | 
					
						
							|  |  |  |     "messagedigest wrong length"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_MSGSIGDIGEST_ERROR), "msgsigdigest error"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_MSGSIGDIGEST_VERIFICATION_FAILURE), | 
					
						
							|  |  |  |     "msgsigdigest verification failure"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_MSGSIGDIGEST_WRONG_LENGTH), | 
					
						
							|  |  |  |     "msgsigdigest wrong length"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NEED_ONE_SIGNER), "need one signer"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NOT_A_SIGNED_RECEIPT), | 
					
						
							|  |  |  |     "not a signed receipt"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NOT_ENCRYPTED_DATA), "not encrypted data"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NOT_KEK), "not kek"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NOT_KEY_AGREEMENT), "not key agreement"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NOT_KEY_TRANSPORT), "not key transport"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NOT_PWRI), "not pwri"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE), | 
					
						
							|  |  |  |     "not supported for this key type"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NO_CIPHER), "no cipher"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NO_CONTENT), "no content"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NO_CONTENT_TYPE), "no content type"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NO_DEFAULT_DIGEST), "no default digest"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NO_DIGEST_SET), "no digest set"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NO_KEY), "no key"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NO_KEY_OR_CERT), "no key or cert"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NO_MATCHING_DIGEST), "no matching digest"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NO_MATCHING_RECIPIENT), | 
					
						
							|  |  |  |     "no matching recipient"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NO_MATCHING_SIGNATURE), | 
					
						
							|  |  |  |     "no matching signature"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NO_MSGSIGDIGEST), "no msgsigdigest"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NO_PASSWORD), "no password"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NO_PRIVATE_KEY), "no private key"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NO_PUBLIC_KEY), "no public key"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NO_RECEIPT_REQUEST), "no receipt request"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NO_SIGNERS), "no signers"}, | 
					
						
							| 
									
										
										
										
											2021-04-28 16:54:57 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_OPERATION_UNSUPPORTED), | 
					
						
							|  |  |  |     "operation unsupported"}, | 
					
						
							| 
									
										
										
										
											2020-10-06 23:02:43 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_PEER_KEY_ERROR), "peer key error"}, | 
					
						
							| 
									
										
										
										
											2017-06-08 03:12:03 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE), | 
					
						
							|  |  |  |     "private key does not match certificate"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_RECEIPT_DECODE_ERROR), | 
					
						
							|  |  |  |     "receipt decode error"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_RECIPIENT_ERROR), "recipient error"}, | 
					
						
							| 
									
										
										
										
											2020-10-06 23:02:43 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_SHARED_INFO_ERROR), "shared info error"}, | 
					
						
							| 
									
										
										
										
											2017-06-08 03:12:03 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_SIGNER_CERTIFICATE_NOT_FOUND), | 
					
						
							|  |  |  |     "signer certificate not found"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_SIGNFINAL_ERROR), "signfinal error"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_SMIME_TEXT_ERROR), "smime text error"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_STORE_INIT_ERROR), "store init error"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_TYPE_NOT_COMPRESSED_DATA), | 
					
						
							|  |  |  |     "type not compressed data"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_TYPE_NOT_DATA), "type not data"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_TYPE_NOT_DIGESTED_DATA), | 
					
						
							|  |  |  |     "type not digested data"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_TYPE_NOT_ENCRYPTED_DATA), | 
					
						
							|  |  |  |     "type not encrypted data"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_TYPE_NOT_ENVELOPED_DATA), | 
					
						
							|  |  |  |     "type not enveloped data"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNABLE_TO_FINALIZE_CONTEXT), | 
					
						
							|  |  |  |     "unable to finalize context"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNKNOWN_CIPHER), "unknown cipher"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNKNOWN_DIGEST_ALGORITHM), | 
					
						
							|  |  |  |     "unknown digest algorithm"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNKNOWN_ID), "unknown id"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM), | 
					
						
							|  |  |  |     "unsupported compression algorithm"}, | 
					
						
							| 
									
										
										
										
											2022-12-06 22:51:54 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM), | 
					
						
							|  |  |  |     "unsupported content encryption algorithm"}, | 
					
						
							| 
									
										
										
										
											2017-06-08 03:12:03 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_CONTENT_TYPE), | 
					
						
							|  |  |  |     "unsupported content type"}, | 
					
						
							| 
									
										
										
										
											2020-10-06 23:02:43 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_ENCRYPTION_TYPE), | 
					
						
							|  |  |  |     "unsupported encryption type"}, | 
					
						
							| 
									
										
										
										
											2017-06-08 03:12:03 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_KEK_ALGORITHM), | 
					
						
							|  |  |  |     "unsupported kek algorithm"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM), | 
					
						
							|  |  |  |     "unsupported key encryption algorithm"}, | 
					
						
							| 
									
										
										
										
											2020-10-06 23:02:43 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_LABEL_SOURCE), | 
					
						
							|  |  |  |     "unsupported label source"}, | 
					
						
							| 
									
										
										
										
											2017-06-08 03:12:03 +08:00
										 |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE), | 
					
						
							|  |  |  |     "unsupported recipientinfo type"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_RECIPIENT_TYPE), | 
					
						
							|  |  |  |     "unsupported recipient type"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_TYPE), "unsupported type"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNWRAP_ERROR), "unwrap error"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNWRAP_FAILURE), "unwrap failure"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_VERIFICATION_FAILURE), | 
					
						
							|  |  |  |     "verification failure"}, | 
					
						
							|  |  |  |     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_WRAP_ERROR), "wrap error"}, | 
					
						
							| 
									
										
										
										
											2015-01-22 11:40:55 +08:00
										 |  |  |     {0, NULL} | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2008-03-13 05:14:28 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-12 17:36:47 +08:00
										 |  |  | # endif
 | 
					
						
							| 
									
										
										
										
											2008-03-13 05:14:28 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-25 10:04:22 +08:00
										 |  |  | int ossl_err_load_CMS_strings(void) | 
					
						
							| 
									
										
										
										
											2015-01-22 11:40:55 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2020-11-12 17:36:47 +08:00
										 |  |  | # ifndef OPENSSL_NO_ERR
 | 
					
						
							| 
									
										
										
										
											2019-09-05 03:45:56 +08:00
										 |  |  |     if (ERR_reason_error_string(CMS_str_reasons[0].error) == NULL) | 
					
						
							| 
									
										
										
										
											2017-06-08 03:12:03 +08:00
										 |  |  |         ERR_load_strings_const(CMS_str_reasons); | 
					
						
							| 
									
										
										
										
											2020-11-12 17:36:47 +08:00
										 |  |  | # endif
 | 
					
						
							| 
									
										
										
										
											2016-07-12 21:50:06 +08:00
										 |  |  |     return 1; | 
					
						
							| 
									
										
										
										
											2015-01-22 11:40:55 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2020-11-12 17:36:47 +08:00
										 |  |  | #else
 | 
					
						
							|  |  |  | NON_EMPTY_TRANSLATION_UNIT | 
					
						
							|  |  |  | #endif
 |