// /** @file
// String definitions for HddPassword Setup Form.
//
// Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
//
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
// **/

#langdef en-US  "English"

#string STR_HDD_SECURITY_CONFIG               #language en-US "HDD Security Configuration"

#string STR_SECURITY_HDD_PWD_DESC             #language en-US "HDD Password Description :"

#string STR_SECURITY_HDD_BANNER_ONE           #language en-US "Allows Access to Set, Modify and Clear HardDisk User and"
#string STR_SECURITY_HDD_BANNER_TWO           #language en-US "Master Passwords."
#string STR_SECURITY_HDD_BANNER_THREE         #language en-US "User Password need to be installed for Enabling Security."
#string STR_SECURITY_HDD_BANNER_FOUR          #language en-US "Master Password can be modified only when successfully"
#string STR_SECURITY_HDD_BANNER_FIVE          #language en-US "unlocked with User Password in POST."

#string STR_HDD_SECURITY_HD                   #language en-US "HDD Password"
#string STR_HDD_SECURITY_HELP                 #language en-US "Set HDD Password"
#string STR_HDD_PASSWORD_CONFIG               #language en-US "HDD PASSWORD CONFIGURATION:"
#string STR_SEC_SUPPORTED                     #language en-US "Security Supported        :"
#string STR_SEC_ENABLED                       #language en-US "Security Enabled          :"
#string STR_SEC_LOCKED                        #language en-US "Security Locked           :"
#string STR_SEC_FROZEN                        #language en-US "Security Frozen           :"
#string STR_YES                               #language en-US "Yes"
#string STR_NO                                #language en-US "No"
#string STR_HDD_USER_PASSWORD                 #language en-US "Request to set User Password"
#string STR_HDD_USER_PASSWORD_HELP            #language en-US "Request to set HDD User Password. \n*** Reset is required for the request to be processed in next boot *** \n*** G3 circle is required to disable freeze state when Security Frozen state is Yes, otherwise the request will be ignored. *** "
#string STR_HDD_MASTER_PASSWORD               #language en-US "Request to set Master Password"
#string STR_HDD_MASTER_PASSWORD_HELP          #language en-US "Request to set HDD Master Password. \n*** Reset is required for the request to be processed in next boot *** \n*** G3 circle is required to disable freeze state when Security Frozen state is Yes, otherwise the request will be ignored. *** "

#string STR_INSTALLED                         #language en-US "INSTALLED"
#string STR_NOT_INSTALLED                     #language en-US "NOT INSTALLED"
#string STR_HDD_USER_PASSWORD_STS             #language en-US "HDD User Password Status  :"
#string STR_HDD_MASTER_PASSWORD_STS           #language en-US "HDD Master Password Status:"
#string STR_NULL                              #language en-US ""
#string STR_EMPTY                             #language en-US ""
