This is test page that we navigate to as part of testing various navigation styles. It includes a form so that we can test saving and restoring of form data, and it needs to be long enough that we can test saving and restoring of scroll position. 




Here are some form elements
that we can use for testing
 Male
 Female
 option #1
 option #2


Now

some

filler

so

the

doc

is

long

enough

to scroll.

This is an anchor point named "anchor1".

============== Back Forward List ==============
        http://127.0.0.1:8000/navigation/metaredirect-goback.html  **nav target**
curr->  http://127.0.0.1:8000/navigation/resources/success200.html  **nav target**
        http://127.0.0.1:8000/navigation/resources/otherpage.html  **nav target**
===============================================
