/** @file
  String definitions for TCG configuration form.

Copyright (c) 2013, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials 
are licensed and made available under the terms and conditions of the BSD License 
which accompanies this distribution.  The full text of the license may be found at 
http://opensource.org/licenses/bsd-license.php

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

**/

#langdef en-US "English"

#string STR_TREE_TITLE                      #language en-US "TrEE Configuration"
#string STR_TREE_HELP                       #language en-US "Press <Enter> to select TrEE Setup options."

#string STR_TREE_DEVICE_STATE_PROMPT        #language en-US "Current TPM Device"
#string STR_TREE_DEVICE_STATE_HELP          #language en-US "Current TPM Device: Disable, TPM1.2, or TPM2.0"
#string STR_TREE_DEVICE_STATE_CONTENT       #language en-US ""

#string STR_TREE_DEVICE_PROMPT              #language en-US "Attempt TPM Device"
#string STR_TREE_DEVICE_HELP                #language en-US "Attempt TPM Device: Disable, TPM1.2, or TPM2.0"
#string STR_TREE_DEVICE_CONTENT             #language en-US ""

#string STR_TREE_PP_OPERATION              #language en-US "TPM2 Physical Presence Operation"

#string STR_TREE_OPERATION                 #language en-US "TPM2 Operation"
#string STR_TREE_OPERATION_HELP            #language en-US "Select one of the supported operation to change TPM2 state."

#string STR_TREE_NO_ACTION                 #language en-US "No Action"
#string STR_TREE_CLEAR                     #language en-US "TPM2 ClearControl(NO) + Clear"

#string STR_TREE_TPM_DISABLE               #language en-US "Disable"
#string STR_TREE_TPM_1_2                   #language en-US "TPM 1.2"
#string STR_TREE_TPM_2_0_DTPM              #language en-US "TPM 2.0 (DTPM)"

#string STR_NULL                           #language en-US ""
