{{header}}
{{object 1 0}} <<
  /Type /Catalog
  /Pages 2 0 R
  /AcroForm 4 0 R
>>
endobj
{{object 2 0}} <<
  /Type /Pages
  /Count 1
  /Kids [
    3 0 R
  ]
>>
endobj
% Page number 0.
{{object 3 0}} <<
  /Type /Page
  /Parent 2 0 R
  /Resources <<
    /Font <</F1 20 0 R>>
  >>
  /Annots [ 5 0 R ]
  /Contents [21 0 R]
  /MediaBox [0 0 612 792]
>>
% Forms
{{object 4 0}} <<
  /Fields [5 0 R]
>>
% Field with actions:
% Cursor enter: E
% Cursor exit: X
% Mouse down: D
% Mouse up: U
% Focus: Fo
% Blur: Bl
{{object 5 0}} <<
 /FT /Tx
 /T (MyField)
 /Type /Annot
 /Subtype /Widget
 /Rect [100 200 150 250]
 /AA <<
   /E 10 0 R
   /X 11 0 R
   /D 12 0 R
   /U 13 0 R
   /Fo 14 0 R
   /Bl 15 0 R
 >>
>>
{{object 10 0}} <<
  /Type /Action
  /S /JavaScript
  /JS (
    app.alert\("enter"\);
    try {
       this.submitForm\("myform", true, true, ["name", "age"]\);
       app.alert\("ERROR: this.submitForm\(\) must not be allowed to execute"\);
    } catch \(e\) {
       app.alert\("PASS: this.submitForm blocked with " + e\);
    }

    try {
       this.print\(\);
       app.alert\("ERROR: this.print\(\) must not be allowed to execute"\);
    } catch \(e\) {
       app.alert\("PASS: this.print blocked with " + e\);
    }
  )
>>
endobj
{{object 11 0}} <<
  /Type /Action
  /S /JavaScript
  /JS (
    app.alert\("exit"\);
    try {
       this.submitForm\("myform", true, true, ["name", "age"]\);
       app.alert\("ERROR: this.submitForm\(\) must not be allowed to execute"\);
    } catch \(e\) {
       app.alert\("PASS: this.submitForm blocked with " + e\);
    }

    try {
       this.print\(\);
       app.alert\("ERROR: this.print\(\) must not be allowed to execute"\);
    } catch \(e\) {
       app.alert\("PASS: this.print blocked with " + e\);
    }
  )
>>
endobj
{{object 12 0}} <<
  /Type /Action
  /S /JavaScript
  /JS (
    app.alert\("down"\);
    try {
       this.submitForm\("myform", true, true, ["name", "age"]\);
    } catch \(e\) {
       app.alert\("ERROR: " + e\);
    }

    try {
       this.print\(\);
       this.print\(false, 1, 10, true, true, true, true, true\);
       this.print\({}\);
       this.print\({"bUi": false, "nStart": 42, "nEnd": 17,
            "bSilent": true, "bShrinkToFit": true, "bPrintAsImage": true,
            "bReverse": true, "bAnnotations": true, "bogus": "yes"}\);
    } catch \(e\) {
       app.alert\("ERROR: " + e\);
    }
  )
>>
endobj
{{object 13 0}} <<
  /Type /Action
  /S /JavaScript
  /JS (
    app.alert\("up"\);
    try {
       this.submitForm\("myform", true, true, ["name", "age"]\);
    } catch \(e\) {
       app.alert\("ERROR: " + e\);
    }

    try {
       this.print\(\);
    } catch \(e\) {
       app.alert\("ERROR: " + e\);
    }
  )
>>
endobj
{{object 14 0}} <<
  /Type /Action
  /S /JavaScript
  /JS (
    app.alert\("focus"\);
    try {
       this.submitForm\("myform", true, true, ["name", "age"]\);
       app.alert\("ERROR: this.submitForm\(\) must not be allowed to execute"\);
    } catch \(e\) {
       app.alert\("PASS: this.submitForm blocked with " + e\);
    }

    try {
       this.print\(\);
       app.alert\("ERROR: this.print\(\) must not be allowed to execute"\);
    } catch \(e\) {
       app.alert\("PASS: this.print blocked with " + e\);
    }
  )
>>
endobj
{{object 15 0}} <<
  /Type /Action
  /S /JavaScript
  /JS (
    app.alert\("blur"\);
    try {
       this.submitForm\("myform", true, true, ["name", "age"]\);
       app.alert\("ERROR: this.submitForm\(\) must not be allowed to execute"\);
    } catch \(e\) {
       app.alert\("PASS: this.submitForm blocked with " + e\);
    }

    try {
       this.print\(\);
       app.alert\("ERROR: this.print\(\) must not be allowed to execute"\);
    } catch \(e\) {
       app.alert\("PASS: this.print blocked with " + e\);
    }
  )
>>
endobj
{{xref}}
{{trailer}}
{{startxref}}
%%EOF
