{{header}}
{{object 1 0}} <<
  /Type /Catalog
  /Pages 2 0 R
  /OpenAction 10 0 R
>>
endobj
{{object 2 0}} <<
  /Type /Pages
  /Count 4
  /Kids [
    3 0 R
    4 0 R
    5 0 R
    6 0 R
  ]
>>
endobj
% Page number 0.
{{object 3 0}} <<
  /Type /Page
  /Parent 2 0 R
  /Resources <<
    /Font <</F1 15 0 R>>
  >>
  /MediaBox [0 0 612 792]
>>
% Page number 1.
{{object 4 0}} <<
  /Type /Page
  /Parent 2 0 R
  /Resources <<
    /Font <</F1 15 0 R>>
  >>
  /MediaBox [0 0 612 792]
>>
% Page number 2.
{{object 5 0}} <<
  /Type /Page
  /Parent 2 0 R
  /Resources <<
    /Font <</F1 15 0 R>>
  >>
  /MediaBox [0 0 612 792]
>>
% Page number 3.
{{object 6 0}} <<
  /Type /Page
  /Parent 2 0 R
  /Resources <<
    /Font <</F1 15 0 R>>
  >>
  /MediaBox [0 0 612 792]
>>

% Info
{{object 9 0}} <<
  /Author (Joe Random Author)
  /Creator (Joe Random Creator)
>>
endobj
% OpenAction action
{{object 10 0}} <<
  /Type /Action
  /S /JavaScript
  /JS 11 0 R
>>
endobj
% JS program to exexute
{{object 11 0}} <<
>>
stream
var app_props = [
  'activeDocs',
  'calculate',
  'formsVersion',
  'fs',
  'fullscreen',
  'language',
  'media',
  'platform',
  'runtimeHighlight',
  'viewerType',
  'viewerVariation',
  'viewerVersion'
];

function testGetProps(props) {
  app.alert('*** Getting properties ***');
  for (var i = 0; i < props.length; ++i) {
    try {
      var expr1 = "app." + props[i];
      var expr2 = "typeof " + expr1;
      app.alert(expr1 + " is " + eval(expr2) + ' ' + eval(expr1));
    } catch (e) {
      app.alert("ERROR: " + e.toString());
    }
  }
}

function testSetProps(props) {
  app.alert('*** Setting properties ***');
  for (var i = 0; i < props.length; ++i) {
    try {
      var expr1 = "app." + props[i] + ' = 3;'
      app.alert(expr1 + " yields " + eval(expr1));
    } catch (e) {
      app.alert("ERROR: " + e.toString());
    }
  }
}

testGetProps(app_props);
testSetProps(app_props);
testGetProps(app_props);
endstream
endobj
{{xref}}
trailer <<
  /Root 1 0 R
  /Info 9 0 R
>>
{{startxref}}
%%EOF
