// *++
//
// Copyright (c) 2009 - 2011, 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.
//
// Module Name:
//
//   Sample.vfr
//
// Abstract:
//
//   Sample Form.
//
// Revision History:
//
// --*/

#include <Guid/HiiResourceSampleHii.h>

formset
  guid     = HII_RESOURCE_SAMPLE_FORM_SET_GUID,
  title    = STRING_TOKEN(STR_SAMPLE_FORM_SET_TITLE),
  help     = STRING_TOKEN(STR_SAMPLE_FORM_SET_HELP),

  form formid = 1,
       title  = STRING_TOKEN(STR_SAMPLE_FORM1_TITLE);

  	text
      help   = STRING_TOKEN(STR_SAMPLE_VERSION_HELP),
      text   = STRING_TOKEN(STR_SAMPLE_VERSION_TEXT),
	    text   = STRING_TOKEN(STR_SAMPLE_EMPTY);

    subtitle text = STRING_TOKEN(STR_SAMPLE_EMPTY);

    subtitle text = STRING_TOKEN(STR_SAMPLE_ESC);

  endform;

endformset;
