%PDF-1.4 %“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com % 'BasicFonts': class PDFDictionary 1 0 obj % The standard fonts dictionary << /F1 2 0 R /F2 3 0 R /F3 9 0 R /F4 92 0 R /F5 147 0 R /F6 201 0 R /F7 219 0 R >> endobj % 'F1': class PDFType1Font 2 0 obj % Font Helvetica << /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font >> endobj % 'F2': class PDFType1Font 3 0 obj % Font Helvetica-Bold << /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font >> endobj % 'Annot.NUMBER1': class PDFDictionary 4 0 obj << /A << /S /URI /Type /Action /URI (http://www.pyinstaller.org) >> /Border [ 0 0 0 ] /Rect [ 153.7323 692.7736 265.4323 704.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER2': class PDFDictionary 5 0 obj << /A << /S /URI /Type /Action /URI (mailto:rasky@develer.com) >> /Border [ 0 0 0 ] /Rect [ 153.7323 662.7736 526.5827 674.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page1': class PDFPage 6 0 obj % Page dictionary << /Annots [ 4 0 R 5 0 R ] /Contents 332 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER3': class LinkAnnotation 7 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 172 0 R /XYZ 62.69291 597.0236 0 ] /Rect [ 62.69291 711.7736 129.3729 723.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER4': class LinkAnnotation 8 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 172 0 R /XYZ 62.69291 597.0236 0 ] /Rect [ 527.0227 711.7736 532.5827 723.7736 ] /Subtype /Link /Type /Annot >> endobj % 'F3': class PDFType1Font 9 0 obj % Font Helvetica-BoldOblique << /BaseFont /Helvetica-BoldOblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font >> endobj % 'Annot.NUMBER5': class LinkAnnotation 10 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 172 0 R /XYZ 62.69291 263.0236 0 ] /Rect [ 62.69291 693.7736 109.3729 705.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER6': class LinkAnnotation 11 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 172 0 R /XYZ 62.69291 263.0236 0 ] /Rect [ 109.3729 693.7736 159.9529 705.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER7': class LinkAnnotation 12 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 172 0 R /XYZ 62.69291 263.0236 0 ] /Rect [ 527.0227 693.7736 532.5827 705.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER8': class LinkAnnotation 13 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 177 0 R /XYZ 62.69291 711.0236 0 ] /Rect [ 62.69291 675.7736 134.9229 687.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER9': class LinkAnnotation 14 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 177 0 R /XYZ 62.69291 711.0236 0 ] /Rect [ 527.0227 675.7736 532.5827 687.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER10': class LinkAnnotation 15 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 177 0 R /XYZ 62.69291 648.0236 0 ] /Rect [ 82.69291 657.7736 159.9429 669.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER11': class LinkAnnotation 16 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 177 0 R /XYZ 62.69291 648.0236 0 ] /Rect [ 527.0227 657.7736 532.5827 669.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER12': class LinkAnnotation 17 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 177 0 R /XYZ 62.69291 337.6236 0 ] /Rect [ 82.69291 639.7736 154.9429 651.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER13': class LinkAnnotation 18 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 177 0 R /XYZ 62.69291 337.6236 0 ] /Rect [ 527.0227 639.7736 532.5827 651.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER14': class LinkAnnotation 19 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 183 0 R /XYZ 62.69291 605.0236 0 ] /Rect [ 82.69291 621.7736 198.2929 633.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER15': class LinkAnnotation 20 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 183 0 R /XYZ 62.69291 605.0236 0 ] /Rect [ 527.0227 621.7736 532.5827 633.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER16': class LinkAnnotation 21 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 183 0 R /XYZ 62.69291 333.4236 0 ] /Rect [ 82.69291 603.7736 217.7229 615.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER17': class LinkAnnotation 22 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 183 0 R /XYZ 62.69291 333.4236 0 ] /Rect [ 527.0227 603.7736 532.5827 615.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER18': class LinkAnnotation 23 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 185 0 R /XYZ 62.69291 591.8236 0 ] /Rect [ 82.69291 585.7736 166.0529 597.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER19': class LinkAnnotation 24 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 185 0 R /XYZ 62.69291 591.8236 0 ] /Rect [ 527.0227 585.7736 532.5827 597.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER20': class LinkAnnotation 25 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 185 0 R /XYZ 62.69291 389.4236 0 ] /Rect [ 82.69291 567.7736 177.1829 579.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER21': class LinkAnnotation 26 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 185 0 R /XYZ 62.69291 389.4236 0 ] /Rect [ 527.0227 567.7736 532.5827 579.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER22': class LinkAnnotation 27 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 187 0 R /XYZ 62.69291 669.0236 0 ] /Rect [ 82.69291 549.7736 176.0529 561.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER23': class LinkAnnotation 28 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 187 0 R /XYZ 62.69291 669.0236 0 ] /Rect [ 527.0227 549.7736 532.5827 561.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER24': class LinkAnnotation 29 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 187 0 R /XYZ 62.69291 597.0236 0 ] /Rect [ 102.6929 531.7736 201.6329 543.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER25': class LinkAnnotation 30 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 187 0 R /XYZ 62.69291 597.0236 0 ] /Rect [ 527.0227 531.7736 532.5827 543.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER26': class LinkAnnotation 31 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 187 0 R /XYZ 62.69291 397.6236 0 ] /Rect [ 102.6929 513.7736 198.2829 525.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER27': class LinkAnnotation 32 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 187 0 R /XYZ 62.69291 397.6236 0 ] /Rect [ 527.0227 513.7736 532.5827 525.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER28': class LinkAnnotation 33 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 187 0 R /XYZ 62.69291 227.4236 0 ] /Rect [ 82.69291 495.7736 194.9429 507.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER29': class LinkAnnotation 34 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 187 0 R /XYZ 62.69291 227.4236 0 ] /Rect [ 527.0227 495.7736 532.5827 507.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER30': class LinkAnnotation 35 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 193 0 R /XYZ 62.69291 405.0236 0 ] /Rect [ 82.69291 477.7736 190.5329 489.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER31': class LinkAnnotation 36 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 193 0 R /XYZ 62.69291 405.0236 0 ] /Rect [ 521.4627 477.7736 532.5827 489.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER32': class LinkAnnotation 37 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 196 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 82.69291 459.7736 179.4029 471.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER33': class LinkAnnotation 38 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 196 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 521.4627 459.7736 532.5827 471.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER34': class LinkAnnotation 39 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 196 0 R /XYZ 62.69291 471.0236 0 ] /Rect [ 62.69291 441.7736 152.1729 453.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER35': class LinkAnnotation 40 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 196 0 R /XYZ 62.69291 471.0236 0 ] /Rect [ 521.4627 441.7736 532.5827 453.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER36': class LinkAnnotation 41 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 196 0 R /XYZ 62.69291 438.0236 0 ] /Rect [ 82.69291 423.7736 146.5929 435.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER37': class LinkAnnotation 42 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 196 0 R /XYZ 62.69291 438.0236 0 ] /Rect [ 521.4627 423.7736 532.5827 435.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER38': class LinkAnnotation 43 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 199 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 82.69291 405.7736 132.1629 417.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER39': class LinkAnnotation 44 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 199 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 521.4627 405.7736 532.5827 417.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER40': class LinkAnnotation 45 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 199 0 R /XYZ 62.69291 633.8236 0 ] /Rect [ 82.69291 387.7736 188.8229 399.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER41': class LinkAnnotation 46 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 199 0 R /XYZ 62.69291 633.8236 0 ] /Rect [ 521.4627 387.7736 532.5827 399.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER42': class LinkAnnotation 47 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 199 0 R /XYZ 62.69291 424.6236 0 ] /Rect [ 82.69291 369.7736 192.7429 381.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER43': class LinkAnnotation 48 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 199 0 R /XYZ 62.69291 424.6236 0 ] /Rect [ 521.4627 369.7736 532.5827 381.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER44': class LinkAnnotation 49 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 199 0 R /XYZ 62.69291 364.6236 0 ] /Rect [ 62.69291 351.7736 112.1629 363.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER45': class LinkAnnotation 50 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 199 0 R /XYZ 62.69291 364.6236 0 ] /Rect [ 521.4627 351.7736 532.5827 363.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER46': class LinkAnnotation 51 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 199 0 R /XYZ 62.69291 331.6236 0 ] /Rect [ 82.69291 333.7736 134.9429 345.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER47': class LinkAnnotation 52 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 199 0 R /XYZ 62.69291 331.6236 0 ] /Rect [ 521.4627 333.7736 532.5827 345.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER48': class LinkAnnotation 53 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 200 0 R /XYZ 62.69291 515.8236 0 ] /Rect [ 82.69291 315.7736 219.9529 327.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER49': class LinkAnnotation 54 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 200 0 R /XYZ 62.69291 515.8236 0 ] /Rect [ 521.4627 315.7736 532.5827 327.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER50': class LinkAnnotation 55 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 202 0 R /XYZ 62.69291 250.6236 0 ] /Rect [ 82.69291 297.7736 165.5029 309.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER51': class LinkAnnotation 56 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 202 0 R /XYZ 62.69291 250.6236 0 ] /Rect [ 521.4627 297.7736 532.5827 309.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER52': class LinkAnnotation 57 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 202 0 R /XYZ 62.69291 220.6236 0 ] /Rect [ 102.6929 279.7736 139.9229 291.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER53': class LinkAnnotation 58 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 202 0 R /XYZ 62.69291 220.6236 0 ] /Rect [ 521.4627 279.7736 532.5827 291.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER54': class LinkAnnotation 59 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 206 0 R /XYZ 62.69291 419.0236 0 ] /Rect [ 102.6929 261.7736 122.1429 273.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER55': class LinkAnnotation 60 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 206 0 R /XYZ 62.69291 419.0236 0 ] /Rect [ 521.4627 261.7736 532.5827 273.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER56': class LinkAnnotation 61 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 206 0 R /XYZ 62.69291 261.8236 0 ] /Rect [ 102.6929 243.7736 123.8129 255.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER57': class LinkAnnotation 62 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 206 0 R /XYZ 62.69291 261.8236 0 ] /Rect [ 521.4627 243.7736 532.5827 255.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER58': class LinkAnnotation 63 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 207 0 R /XYZ 62.69291 659.0236 0 ] /Rect [ 102.6929 225.7736 122.7029 237.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER59': class LinkAnnotation 64 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 207 0 R /XYZ 62.69291 659.0236 0 ] /Rect [ 521.4627 225.7736 532.5827 237.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER60': class LinkAnnotation 65 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 207 0 R /XYZ 62.69291 207.8236 0 ] /Rect [ 102.6929 207.7736 121.0329 219.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER61': class LinkAnnotation 66 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 207 0 R /XYZ 62.69291 207.8236 0 ] /Rect [ 521.4627 207.7736 532.5827 219.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER62': class LinkAnnotation 67 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 208 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 102.6929 189.7736 148.8129 201.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER63': class LinkAnnotation 68 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 208 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 521.4627 189.7736 532.5827 201.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER64': class LinkAnnotation 69 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 208 0 R /XYZ 62.69291 595.8236 0 ] /Rect [ 102.6929 171.7736 123.2529 183.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER65': class LinkAnnotation 70 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 208 0 R /XYZ 62.69291 595.8236 0 ] /Rect [ 521.4627 171.7736 532.5827 183.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER66': class LinkAnnotation 71 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 208 0 R /XYZ 62.69291 358.6236 0 ] /Rect [ 102.6929 153.7736 139.3629 165.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER67': class LinkAnnotation 72 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 208 0 R /XYZ 62.69291 358.6236 0 ] /Rect [ 521.4627 153.7736 532.5827 165.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER68': class LinkAnnotation 73 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 210 0 R /XYZ 62.69291 297.473 0 ] /Rect [ 62.69291 135.7736 176.5829 147.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER69': class LinkAnnotation 74 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 210 0 R /XYZ 62.69291 297.473 0 ] /Rect [ 521.4627 135.7736 532.5827 147.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER70': class LinkAnnotation 75 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 210 0 R /XYZ 62.69291 264.473 0 ] /Rect [ 82.69291 117.7736 281.1029 129.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER71': class LinkAnnotation 76 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 210 0 R /XYZ 62.69291 264.473 0 ] /Rect [ 521.4627 117.7736 532.5827 129.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER72': class LinkAnnotation 77 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 210 0 R /XYZ 62.69291 204.473 0 ] /Rect [ 82.69291 99.77362 216.6329 111.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER73': class LinkAnnotation 78 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 210 0 R /XYZ 62.69291 204.473 0 ] /Rect [ 521.4627 99.77362 532.5827 111.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page2': class PDFPage 79 0 obj % Page dictionary << /Annots [ 7 0 R 8 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R ] /Contents 333 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER74': class LinkAnnotation 80 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 210 0 R /XYZ 62.69291 174.473 0 ] /Rect [ 102.6929 738.7736 188.8229 750.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER75': class LinkAnnotation 81 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 210 0 R /XYZ 62.69291 174.473 0 ] /Rect [ 521.4627 738.7736 532.5827 750.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER76': class LinkAnnotation 82 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 213 0 R /XYZ 62.69291 521.8236 0 ] /Rect [ 102.6929 720.7736 215.5229 732.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER77': class LinkAnnotation 83 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 213 0 R /XYZ 62.69291 521.8236 0 ] /Rect [ 521.4627 720.7736 532.5827 732.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER78': class LinkAnnotation 84 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 213 0 R /XYZ 62.69291 387.6236 0 ] /Rect [ 102.6929 702.7736 251.8929 714.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER79': class LinkAnnotation 85 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 213 0 R /XYZ 62.69291 387.6236 0 ] /Rect [ 521.4627 702.7736 532.5827 714.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER80': class LinkAnnotation 86 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 213 0 R /XYZ 62.69291 182.2236 0 ] /Rect [ 82.69291 684.7736 228.8529 696.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER81': class LinkAnnotation 87 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 213 0 R /XYZ 62.69291 182.2236 0 ] /Rect [ 521.4627 684.7736 532.5827 696.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER82': class LinkAnnotation 88 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 213 0 R /XYZ 62.69291 152.2236 0 ] /Rect [ 102.6929 666.7736 187.1929 678.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER83': class LinkAnnotation 89 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 213 0 R /XYZ 62.69291 152.2236 0 ] /Rect [ 521.4627 666.7736 532.5827 678.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER84': class LinkAnnotation 90 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 565.4236 0 ] /Rect [ 102.6929 648.7736 202.1729 660.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER85': class LinkAnnotation 91 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 565.4236 0 ] /Rect [ 521.4627 648.7736 532.5827 660.7736 ] /Subtype /Link /Type /Annot >> endobj % 'F4': class PDFType1Font 92 0 obj % Font Courier << /BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font >> endobj % 'Annot.NUMBER86': class LinkAnnotation 93 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 222 0 R /XYZ 62.69291 717.0236 0 ] /Rect [ 102.6929 630.7736 254.8829 642.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER87': class LinkAnnotation 94 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 222 0 R /XYZ 62.69291 717.0236 0 ] /Rect [ 521.4627 630.7736 532.5827 642.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER88': class LinkAnnotation 95 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 222 0 R /XYZ 62.69291 462.0236 0 ] /Rect [ 102.6929 612.7736 227.7429 624.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER89': class LinkAnnotation 96 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 222 0 R /XYZ 62.69291 462.0236 0 ] /Rect [ 521.4627 612.7736 532.5827 624.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER90': class LinkAnnotation 97 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 222 0 R /XYZ 62.69291 184.6236 0 ] /Rect [ 102.6929 594.7736 218.1929 606.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER91': class LinkAnnotation 98 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 222 0 R /XYZ 62.69291 184.6236 0 ] /Rect [ 521.4627 594.7736 532.5827 606.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER92': class LinkAnnotation 99 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 224 0 R /XYZ 62.69291 687.0236 0 ] /Rect [ 62.69291 576.7736 131.0529 588.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER93': class LinkAnnotation 100 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 224 0 R /XYZ 62.69291 687.0236 0 ] /Rect [ 521.4627 576.7736 532.5827 588.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER94': class LinkAnnotation 101 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 224 0 R /XYZ 62.69291 654.0236 0 ] /Rect [ 82.69291 558.7736 202.7429 570.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER95': class LinkAnnotation 102 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 224 0 R /XYZ 62.69291 654.0236 0 ] /Rect [ 521.4627 558.7736 532.5827 570.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER96': class LinkAnnotation 103 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 224 0 R /XYZ 62.69291 540.0236 0 ] /Rect [ 102.6929 540.7736 193.2929 552.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER97': class LinkAnnotation 104 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 224 0 R /XYZ 62.69291 540.0236 0 ] /Rect [ 521.4627 540.7736 532.5827 552.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER98': class LinkAnnotation 105 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 224 0 R /XYZ 62.69291 351.0236 0 ] /Rect [ 102.6929 522.7736 193.2829 534.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER99': class LinkAnnotation 106 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 224 0 R /XYZ 62.69291 351.0236 0 ] /Rect [ 521.4627 522.7736 532.5827 534.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER100': class LinkAnnotation 107 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 230 0 R /XYZ 62.69291 573.0236 0 ] /Rect [ 62.69291 504.7736 158.2929 516.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER101': class LinkAnnotation 108 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 230 0 R /XYZ 62.69291 573.0236 0 ] /Rect [ 521.4627 504.7736 532.5827 516.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER102': class LinkAnnotation 109 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 230 0 R /XYZ 62.69291 540.0236 0 ] /Rect [ 82.69291 486.7736 176.0629 498.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER103': class LinkAnnotation 110 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 230 0 R /XYZ 62.69291 540.0236 0 ] /Rect [ 521.4627 486.7736 532.5827 498.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER104': class LinkAnnotation 111 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 230 0 R /XYZ 62.69291 432.0236 0 ] /Rect [ 82.69291 468.7736 148.6929 480.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER105': class LinkAnnotation 112 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 230 0 R /XYZ 62.69291 432.0236 0 ] /Rect [ 521.4627 468.7736 532.5827 480.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER106': class LinkAnnotation 113 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 230 0 R /XYZ 62.69291 252.0236 0 ] /Rect [ 82.69291 450.7736 130.6929 462.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER107': class LinkAnnotation 114 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 230 0 R /XYZ 62.69291 252.0236 0 ] /Rect [ 521.4627 450.7736 532.5827 462.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER108': class LinkAnnotation 115 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 236 0 R /XYZ 62.69291 699.0236 0 ] /Rect [ 62.69291 432.7736 99.93291 444.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER109': class LinkAnnotation 116 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 236 0 R /XYZ 62.69291 699.0236 0 ] /Rect [ 521.4627 432.7736 532.5827 444.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER110': class LinkAnnotation 117 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 236 0 R /XYZ 62.69291 504.0236 0 ] /Rect [ 62.69291 414.7736 108.2529 426.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER111': class LinkAnnotation 118 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 236 0 R /XYZ 62.69291 504.0236 0 ] /Rect [ 521.4627 414.7736 532.5827 426.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER112': class LinkAnnotation 119 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 236 0 R /XYZ 62.69291 373.6236 0 ] /Rect [ 82.69291 396.7736 189.9729 408.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER113': class LinkAnnotation 120 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 236 0 R /XYZ 62.69291 373.6236 0 ] /Rect [ 521.4627 396.7736 532.5827 408.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER114': class LinkAnnotation 121 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 236 0 R /XYZ 62.69291 289.6236 0 ] /Rect [ 102.6929 378.7736 185.5029 390.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER115': class LinkAnnotation 122 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 236 0 R /XYZ 62.69291 289.6236 0 ] /Rect [ 521.4627 378.7736 532.5827 390.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER116': class LinkAnnotation 123 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 240 0 R /XYZ 62.69291 573.0236 0 ] /Rect [ 102.6929 360.7736 138.2629 372.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER117': class LinkAnnotation 124 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 240 0 R /XYZ 62.69291 573.0236 0 ] /Rect [ 521.4627 360.7736 532.5827 372.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER118': class LinkAnnotation 125 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 240 0 R /XYZ 62.69291 295.6236 0 ] /Rect [ 102.6929 342.7736 253.8729 354.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER119': class LinkAnnotation 126 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 240 0 R /XYZ 62.69291 295.6236 0 ] /Rect [ 521.4627 342.7736 532.5827 354.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER120': class LinkAnnotation 127 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 242 0 R /XYZ 62.69291 387.0236 0 ] /Rect [ 82.69291 324.7736 247.1929 336.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER121': class LinkAnnotation 128 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 242 0 R /XYZ 62.69291 387.0236 0 ] /Rect [ 521.4627 324.7736 532.5827 336.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER122': class LinkAnnotation 129 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 242 0 R /XYZ 62.69291 291.0236 0 ] /Rect [ 102.6929 306.7736 164.9229 318.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER123': class LinkAnnotation 130 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 242 0 R /XYZ 62.69291 291.0236 0 ] /Rect [ 521.4627 306.7736 532.5827 318.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER124': class LinkAnnotation 131 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 242 0 R /XYZ 62.69291 186.0236 0 ] /Rect [ 102.6929 288.7736 180.6929 300.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER125': class LinkAnnotation 132 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 242 0 R /XYZ 62.69291 186.0236 0 ] /Rect [ 521.4627 288.7736 532.5827 300.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER126': class LinkAnnotation 133 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 244 0 R /XYZ 62.69291 693.0236 0 ] /Rect [ 102.6929 270.7736 173.8229 282.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER127': class LinkAnnotation 134 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 244 0 R /XYZ 62.69291 693.0236 0 ] /Rect [ 521.4627 270.7736 532.5827 282.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER128': class LinkAnnotation 135 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 244 0 R /XYZ 62.69291 546.0236 0 ] /Rect [ 102.6929 252.7736 167.1729 264.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER129': class LinkAnnotation 136 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 244 0 R /XYZ 62.69291 546.0236 0 ] /Rect [ 521.4627 252.7736 532.5827 264.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER130': class LinkAnnotation 137 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 244 0 R /XYZ 62.69291 411.0236 0 ] /Rect [ 102.6929 234.7736 131.0329 246.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER131': class LinkAnnotation 138 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 244 0 R /XYZ 62.69291 411.0236 0 ] /Rect [ 521.4627 234.7736 532.5827 246.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER132': class LinkAnnotation 139 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 245 0 R /XYZ 62.69291 474.8236 0 ] /Rect [ 82.69291 216.7736 184.9629 228.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER133': class LinkAnnotation 140 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 245 0 R /XYZ 62.69291 474.8236 0 ] /Rect [ 521.4627 216.7736 532.5827 228.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER134': class LinkAnnotation 141 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 245 0 R /XYZ 62.69291 402.8236 0 ] /Rect [ 102.6929 198.7736 144.9229 210.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER135': class LinkAnnotation 142 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 245 0 R /XYZ 62.69291 402.8236 0 ] /Rect [ 521.4627 198.7736 532.5827 210.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER136': class LinkAnnotation 143 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 245 0 R /XYZ 62.69291 291.8236 0 ] /Rect [ 102.6929 180.7736 177.7129 192.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER137': class LinkAnnotation 144 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 245 0 R /XYZ 62.69291 291.8236 0 ] /Rect [ 521.4627 180.7736 532.5827 192.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER138': class LinkAnnotation 145 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 245 0 R /XYZ 62.69291 210.8236 0 ] /Rect [ 102.6929 162.7736 145.4829 174.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER139': class LinkAnnotation 146 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 245 0 R /XYZ 62.69291 210.8236 0 ] /Rect [ 521.4627 162.7736 532.5827 174.7736 ] /Subtype /Link /Type /Annot >> endobj % 'F5': class PDFType1Font 147 0 obj % Font Helvetica-Oblique << /BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font >> endobj % 'Annot.NUMBER140': class LinkAnnotation 148 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 342.6236 0 ] /Rect [ 82.69291 144.7736 223.8429 156.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER141': class LinkAnnotation 149 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 342.6236 0 ] /Rect [ 521.4627 144.7736 532.5827 156.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER142': class LinkAnnotation 150 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 222.6236 0 ] /Rect [ 102.6929 126.7736 180.6929 138.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER143': class LinkAnnotation 151 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 222.6236 0 ] /Rect [ 521.4627 126.7736 532.5827 138.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER144': class LinkAnnotation 152 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 247 0 R /XYZ 62.69291 705.0236 0 ] /Rect [ 102.6929 108.7736 186.6929 120.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER145': class LinkAnnotation 153 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 247 0 R /XYZ 62.69291 705.0236 0 ] /Rect [ 521.4627 108.7736 532.5827 120.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page3': class PDFPage 154 0 obj % Page dictionary << /Annots [ 80 0 R 81 0 R 82 0 R 83 0 R 84 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 129 0 R 130 0 R 131 0 R 132 0 R 133 0 R 134 0 R 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R 144 0 R 145 0 R 146 0 R 148 0 R 149 0 R 150 0 R 151 0 R 152 0 R 153 0 R ] /Contents 334 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER146': class LinkAnnotation 155 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 247 0 R /XYZ 62.69291 618.0236 0 ] /Rect [ 102.6929 738.7736 210.6929 750.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER147': class LinkAnnotation 156 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 247 0 R /XYZ 62.69291 618.0236 0 ] /Rect [ 521.4627 738.7736 532.5827 750.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER148': class LinkAnnotation 157 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 247 0 R /XYZ 62.69291 513.0236 0 ] /Rect [ 102.6929 720.7736 132.6929 732.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER149': class LinkAnnotation 158 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 247 0 R /XYZ 62.69291 513.0236 0 ] /Rect [ 521.4627 720.7736 532.5827 732.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER150': class LinkAnnotation 159 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 247 0 R /XYZ 62.69291 318.0236 0 ] /Rect [ 102.6929 702.7736 146.6029 714.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER151': class LinkAnnotation 160 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 247 0 R /XYZ 62.69291 318.0236 0 ] /Rect [ 521.4627 702.7736 532.5827 714.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER152': class LinkAnnotation 161 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 248 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 102.6929 684.7736 154.9229 696.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER153': class LinkAnnotation 162 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 248 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 521.4627 684.7736 532.5827 696.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER154': class LinkAnnotation 163 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 248 0 R /XYZ 62.69291 606.0236 0 ] /Rect [ 102.6929 666.7736 159.9229 678.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER155': class LinkAnnotation 164 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 248 0 R /XYZ 62.69291 606.0236 0 ] /Rect [ 521.4627 666.7736 532.5827 678.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER156': class LinkAnnotation 165 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 248 0 R /XYZ 62.69291 525.0236 0 ] /Rect [ 102.6929 648.7736 159.9329 660.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER157': class LinkAnnotation 166 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 248 0 R /XYZ 62.69291 525.0236 0 ] /Rect [ 521.4627 648.7736 532.5827 660.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER158': class LinkAnnotation 167 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 248 0 R /XYZ 62.69291 444.0236 0 ] /Rect [ 102.6929 630.7736 150.4829 642.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER159': class LinkAnnotation 168 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 248 0 R /XYZ 62.69291 444.0236 0 ] /Rect [ 521.4627 630.7736 532.5827 642.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER160': class LinkAnnotation 169 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 248 0 R /XYZ 62.69291 267.0236 0 ] /Rect [ 102.6929 612.7736 142.1529 624.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER161': class LinkAnnotation 170 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 248 0 R /XYZ 62.69291 267.0236 0 ] /Rect [ 521.4627 612.7736 532.5827 624.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER162': class PDFDictionary 171 0 obj << /A << /S /URI /Type /Action /URI (http://sourceforge.net/projects/pywin32/files/) >> /Border [ 0 0 0 ] /Rect [ 105.6929 516.7736 148.4829 528.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page4': class PDFPage 172 0 obj % Page dictionary << /Annots [ 155 0 R 156 0 R 157 0 R 158 0 R 159 0 R 160 0 R 161 0 R 162 0 R 163 0 R 164 0 R 165 0 R 166 0 R 167 0 R 168 0 R 169 0 R 170 0 R 171 0 R ] /Contents 335 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER163': class LinkAnnotation 173 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 183 0 R /XYZ 62.69291 336.4236 0 ] /Rect [ 314.4429 612.7736 453.9229 624.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER164': class LinkAnnotation 174 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 177 0 R /XYZ 62.69291 340.6236 0 ] /Rect [ 81.59291 350.3736 164.3929 362.3736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER165': class LinkAnnotation 175 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 210 0 R /XYZ 62.69291 300.973 0 ] /Rect [ 169.9529 350.3736 272.2229 362.3736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER166': class LinkAnnotation 176 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 199 0 R /XYZ 62.69291 368.1236 0 ] /Rect [ 443.9929 350.3736 490.6729 362.3736 ] /Subtype /Link /Type /Annot >> endobj % 'Page5': class PDFPage 177 0 obj % Page dictionary << /Annots [ 173 0 R 174 0 R 175 0 R 176 0 R ] /Contents 336 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER167': class LinkAnnotation 178 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 202 0 R /XYZ 62.69291 223.1236 0 ] /Rect [ 489.3527 417.3736 521.5735 429.3736 ] /Subtype /Link /Type /Annot >> endobj % 'Page6': class PDFPage 179 0 obj % Page dictionary << /Annots [ 178 0 R ] /Contents 337 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER168': class LinkAnnotation 180 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 185 0 R /XYZ 62.69291 594.8236 0 ] /Rect [ 345.6629 617.7736 429.0229 629.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER169': class LinkAnnotation 181 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 199 0 R /XYZ 62.69291 368.1236 0 ] /Rect [ 229.4529 515.7736 278.9129 527.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER170': class LinkAnnotation 182 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 177 0 R /XYZ 62.69291 651.0236 0 ] /Rect [ 85.47291 136.3736 165.5029 148.3736 ] /Subtype /Link /Type /Annot >> endobj % 'Page7': class PDFPage 183 0 obj % Page dictionary << /Annots [ 180 0 R 181 0 R 182 0 R ] /Contents 338 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER171': class LinkAnnotation 184 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 199 0 R /XYZ 62.69291 368.1236 0 ] /Rect [ 83.26291 402.1736 132.7229 414.1736 ] /Subtype /Link /Type /Annot >> endobj % 'Page8': class PDFPage 185 0 obj % Page dictionary << /Annots [ 184 0 R ] /Contents 339 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER172': class LinkAnnotation 186 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 224 0 R /XYZ 62.69291 657.0236 0 ] /Rect [ 295.2764 129.9736 423.7372 141.9736 ] /Subtype /Link /Type /Annot >> endobj % 'Page9': class PDFPage 187 0 obj % Page dictionary << /Annots [ 186 0 R ] /Contents 340 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER173': class LinkAnnotation 188 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 187 0 R /XYZ 62.69291 672.0236 0 ] /Rect [ 173.8629 627.7736 267.2229 639.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER174': class PDFDictionary 189 0 obj << /A << /S /URI /Type /Action /URI (http://peak.telecommunity.com/DevCenter/setuptools) >> /Border [ 0 0 0 ] /Rect [ 62.69291 369.7736 113.1343 381.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER175': class PDFDictionary 190 0 obj << /A << /S /URI /Type /Action /URI (http://peak.telecommunity.com/DevCenter/EasyInstall) >> /Border [ 0 0 0 ] /Rect [ 252.6778 357.7736 307.7471 369.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER176': class PDFDictionary 191 0 obj << /A << /S /URI /Type /Action /URI (http://peak.telecommunity.com/DevCenter/setuptools) >> /Border [ 0 0 0 ] /Rect [ 317.6788 303.7736 366.0828 315.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER177': class LinkAnnotation 192 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 187 0 R /XYZ 62.69291 230.4236 0 ] /Rect [ 107.9229 162.7736 220.1729 174.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page10': class PDFPage 193 0 obj % Page dictionary << /Annots [ 188 0 R 189 0 R 190 0 R 191 0 R 192 0 R ] /Contents 341 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER178': class LinkAnnotation 194 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 208 0 R /XYZ 62.69291 361.1236 0 ] /Rect [ 441.798 609.7736 483.8454 621.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER179': class LinkAnnotation 195 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 208 0 R /XYZ 62.69291 361.1236 0 ] /Rect [ 331.8863 579.7736 371.3516 591.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page11': class PDFPage 196 0 obj % Page dictionary << /Annots [ 194 0 R 195 0 R ] /Contents 342 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER180': class LinkAnnotation 197 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 242 0 R /XYZ 62.69291 390.0236 0 ] /Rect [ 165.5229 377.3736 324.4729 389.3736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER181': class LinkAnnotation 198 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 183 0 R /XYZ 62.69291 608.0236 0 ] /Rect [ 344.5055 296.3736 461.9787 308.3736 ] /Subtype /Link /Type /Annot >> endobj % 'Page12': class PDFPage 199 0 obj % Page dictionary << /Annots [ 197 0 R 198 0 R ] /Contents 343 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page13': class PDFPage 200 0 obj % Page dictionary << /Contents 344 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'F6': class PDFType1Font 201 0 obj % Font Courier-Bold << /BaseFont /Courier-Bold /Encoding /WinAnsiEncoding /Name /F6 /Subtype /Type1 /Type /Font >> endobj % 'Page14': class PDFPage 202 0 obj % Page dictionary << /Contents 345 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER182': class LinkAnnotation 203 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 567.9236 0 ] /Rect [ 415.3807 738.7736 520.9127 750.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER183': class LinkAnnotation 204 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 567.9236 0 ] /Rect [ 468.8734 695.7736 532.2334 707.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER184': class LinkAnnotation 205 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 567.9236 0 ] /Rect [ 82.69291 683.7736 118.8129 695.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page15': class PDFPage 206 0 obj % Page dictionary << /Annots [ 203 0 R 204 0 R 205 0 R ] /Contents 346 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page16': class PDFPage 207 0 obj % Page dictionary << /Contents 347 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page17': class PDFPage 208 0 obj % Page dictionary << /Contents 348 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER185': class PDFDictionary 209 0 obj << /A << /S /URI /Type /Action /URI (http://www.pyinstaller.org/wiki/Recipe) >> /Border [ 0 0 0 ] /Rect [ 62.69291 217.223 96.59291 229.223 ] /Subtype /Link /Type /Annot >> endobj % 'Page18': class PDFPage 210 0 obj % Page dictionary << /Annots [ 209 0 R ] /Contents 349 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER186': class LinkAnnotation 211 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 567.9236 0 ] /Rect [ 468.0296 546.5736 531.3896 558.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER187': class LinkAnnotation 212 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 567.9236 0 ] /Rect [ 62.69291 534.5736 98.81291 546.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Page19': class PDFPage 213 0 obj % Page dictionary << /Annots [ 211 0 R 212 0 R ] /Contents 350 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER188': class PDFDictionary 214 0 obj << /A << /S /URI /Type /Action /URI (http://www.pythonware.com/products/pil/) >> /Border [ 0 0 0 ] /Rect [ 168.8229 368.9736 183.8329 380.9736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER189': class PDFDictionary 215 0 obj << /A << /S /URI /Type /Action /URI (http://sourceforge.net/projects/pywin32/files/) >> /Border [ 0 0 0 ] /Rect [ 189.3929 368.9736 229.4029 380.9736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER190': class PDFDictionary 216 0 obj << /A << /S /URI /Type /Action /URI (http://www.riverbankcomputing.co.uk/pyqt/index.php) >> /Border [ 0 0 0 ] /Rect [ 234.9629 368.9736 259.9729 380.9736 ] /Subtype /Link /Type /Annot >> endobj % 'Page20': class PDFPage 217 0 obj % Page dictionary << /Annots [ 214 0 R 215 0 R 216 0 R ] /Contents 351 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER191': class LinkAnnotation 218 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 244 0 R /XYZ 62.69291 413.5236 0 ] /Rect [ 455.2929 729.7736 486.4129 741.7736 ] /Subtype /Link /Type /Annot >> endobj % 'F7': class PDFType1Font 219 0 obj % Font Courier-BoldOblique << /BaseFont /Courier-BoldOblique /Encoding /WinAnsiEncoding /Name /F7 /Subtype /Type1 /Type /Font >> endobj % 'Annot.NUMBER192': class LinkAnnotation 220 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 242 0 R /XYZ 62.69291 390.0236 0 ] /Rect [ 304.0098 546.7736 466.5751 558.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER193': class PDFDictionary 221 0 obj << /A << /S /URI /Type /Action /URI (http://www.pyinstaller.org/browser/trunk/PyInstaller/hooks/hook-win32com.py?rev=latest) >> /Border [ 0 0 0 ] /Rect [ 62.69291 534.7736 227.7529 546.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page21': class PDFPage 222 0 obj % Page dictionary << /Annots [ 218 0 R 220 0 R 221 0 R ] /Contents 352 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER194': class LinkAnnotation 223 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 345.6236 0 ] /Rect [ 62.69291 699.7736 86.59291 711.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page22': class PDFPage 224 0 obj % Page dictionary << /Annots [ 223 0 R ] /Contents 353 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER195': class LinkAnnotation 225 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 224 0 R /XYZ 62.69291 542.5236 0 ] /Rect [ 211.2528 741.7736 304.9928 753.7736 ] /Subtype /Link /Type /Annot >> endobj % 'FormXob.e426aed04efc58a2635ba06dfa966651': class PDFImageXObject 226 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 326 /Length 3982 /Mask [ 255 255 255 255 255 255 ] /Subtype /Image /Type /XObject /Width 235 >> stream Gb"/l>F);%(.Qc;h3;ZsDMh/fLXQeQZ60&me9a>tcm<[o"@V@7&*=khE$.(_:/eDC+Tqdf>!f5_BV'djUuELNOU_F+ko_[B%K[=.+>Aof!Yaf@0TchH'BpVnOU_F+ko_[B%K[=.+>Aof!Yaf@0TchH'BpVnOU_H-;eQp4J_Wm2J_qk42f7Yt)9rckj5p!e\2Bb)Oal(s.l=_P0=Qdc:%EN^&GV5OF44K6:+gMGT%]W%eQ]NHigsIKo?#q(5i=R.btU-F2;;_HN]kW'`Tc=C1sZ+T>a%8W%>!CbZtt&K^gHN7.'TnL>?:nSo?#q(5i=R.buKT:Aof!Yaf@0TchH'BpVnOU_F+ko_[B%K[=.+>Aof!Yaf@0TchH'BpVnOU_F+ko_[B%K[=.+>Ar'9S!3oAWFPX^^S*)PtcnHYT*oWdNC57Eu4V`$"%&kl-&1kR=1:a*lgF6HA]MB$!6XXHbZ&*\*!2SD8PG)fNl/?2W::^k-dkUfJM\c!]pO3*?r,CG"@Dsp%)k(WgV//8:/@OM'<.6%9qYHP.qeF-2j9Ujc-;2Z->\)I&$mF!H8M:XohqtFQ\_9jj?_J+?]YDW>Y`6GL1]tV)G-ENHCM51WjD/K4eJJ!,5bg.o=DPp``RO6lYYhmq(k-eXS2Rgi[n$DCG"lA4J/HR0d;T(As$+&55gI/8+:M3EI0ENmr;?Pf\$i`["c>-h&e5':)j5(ik5n/dgMj(N!>A)II7Tr5nD;\s*a-t8Jjm9IQ%?/(1P+PT!fIf[70G&IJOu&!_#P\i5#&+VcUd8CM#(]&Y"9rQO(o0H*O9U8%)?^7Y&/_4B_a+#2o]p`:rBtX>^2d<4q?f,`TlHj,*!QOP'joFu:,"mNM-oGr)VD6']1P7*A#$"C"pA7t&)4neE7gAPURcKg\)A[.p1'ks*!QPKMIfRGhqRZj;aK?A=B4;>[3&QT#&t1kUd8CM#(]&Y"9rQO(o4-3@">de.Ic2dCsW055oKk1Bb2,W6/[%p+5[h!K]Rs(]/0@K4aJDb4u7BG88\i[.M0)olr)fL#6+Sk=16l-@Mba!esrW>JSW'qYXk2o^*o/4:#AC<\FN3Vi8(Y%)Jpg?d^LWs)7soc"!d;qb\70?22m1RC.'!XJL`*$QK**"H5-Pu+t8gs`%FB[K"rK??=^`X'fK/d?H$`DcBb`\lcsZEDLI\'OQhqb7]SrBt_(Y!r]02Xu5K<_jKJZs1M;^tkH3>84bW".uTo&H].r)<`/8F_9iU>%I#2S*t8m<,;XQ(Hlq7)]4.,@A6Hd7H`oMKYT(](H@qaWt>Dc1^FN<+>??=^`X'fK/k`1qcYoL\p5W,-1fs=:fk6A,ramW1"9Pbs)!PfrVjh=hLg)0PZQAjQUF2CITb;nB@gV-0jS28t*[OOGC9H+h"5:8[Rp\J'>1EcdMf-<9`?X^[UPC+o1L`eBBK>8T=!eW<8%+67P8;"]#9sk$)bb[p_p\n]U"peHc>gPY>"Km`/mUn/*q&jW&`%09Rn7p)+U)dH;]M1Bmo!cR3?AN]u%IX!$p*"F!F),VJZ>3Q,roS%*Cn"+e?m0+pb4mf(2Pa6"`NqhaGl(C;>Up.Pjaf"f$bq0`L>f"gIZ8/QoeB3J^#PdO_*`,Vg3rZ^=\*mT%n0EP=pgF&S2G`mu<&\'LDGG,*!?I[&/_3/@#tSD6(2Nl#+/&S!cNHcKZji+'BpVnOU_F+ko_[B%K[=.+>Aof!Yahf6O#)7PlgFQ'.%=B^`X'fK/8T=!eW<8%+69fBfX2[J&`4Ij)(98bm%\9XDq-Bee6)?fe%<4g@HHk[[gMH'DE9t0Of%dI2ooS5`Xe]TM9eP\!e.[pGrSUHS=C,DW]Q1lf`^@a,g];S;\2QT0dSZO`"e$>`sZfP*(OsT4%sn=1gijTX]_HQ\KZTp3Y;:*d(icN84>tW+I#B(&Za#,R;b2r(DgktP4.#"DiVn(bF7a)`:MR,+@<"Gj.Q_I]D(LA4[JCV%kGSI:?hQ4*Mbiq5`L4tikhWU`l'K\Fd:?ioPb1;4nCh(US:"#%Soqc2A5TG#e'fC!W]AfL?gC(>.^6)lme,j9KksbHeR2kg:COq+s)GEBKc7IC%-]Joa,nie`>@nOropu;XF]CA#Ci!c$8st(^[5\DN51Wie.0OH9h*g\X-DPrNIF`PS/?Q2BgVUNqDRiq0be!?Ar[<(S8[9OgmXnbkE;?hhg_rdU^]FeYf1+Adg#6_A>sL]`tN];nq6IdT6uK2CE8ddX@ROq>/%pl8R>VIA!;D;,tmQtWZpQ^BE/58T=!eW<8%+67P8;"]#%0D/=#Ro-\.knbDl4eL'UEX5\&=>unJVeI[Qq.I5M0';r8-a^&F:ag1LEA9Z=fN0\n"2!o!sAgB&/_3/@#tSD5oKk1Bb2,W6"#cYJO(1W#&+VcUd]kH96+dZOM-^s"b^QuG7Rfj#0([p1Ab=HAUIq,/LVDH6sJTiAeE'pe54+GW^7c;O9q\E7Yq:'\.Y73bT]dS=kS%n>g]2Alb5oKk1Bb2,W6"#cYJO(1W#&+VcUd8CM#(]&Y"9rS?'c:=2FUGeO;%YQ>#Y_%H^dL3h9VdunJVeI[Qq.I5M0';r8-a^&F:ag1#D&pJnL(3n02?lm$rpLC\AJ$i02@S1E5E`:Km?8JP6ZXh$j+1CR#i2:KcqB#06M".e)rZr/D//8:7dQq7b*<[_;6!tlW"=DP_?m6To-IP1f+rpe5dQq7b*<[_;WE*DW\Pt"s9?<&70TchH'BpWY,tXSK,O;_s9@"IYXt%7^>]+9Tgo&o#^c&rSoIKBZr4A11!nS)=n:,qj'4651oDR^g4iWa_(^-uk+e.]>]T`QmNK)C&=,XkZ,o=(iDVNdeQf6(7$j'Lq>[V@&joQoIi8'HA`tCaIU)O4^dQq7b*<[_;6!tn-C'=g?Q8o"2>mI$+&/_3/@#tSD5oKk1Bb2,W6"#ddLO\[l/B@bkJJE`4~>endstream endobj % 'Annot.NUMBER196': class PDFDictionary 227 0 obj << /A << /S /URI /Type /Action /URI (http://www.pyinstaller.org/browser/trunk/source/common/launch.c?rev=latest) >> /Border [ 0 0 0 ] /Rect [ 207.2329 657.7736 318.3829 669.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER197': class LinkAnnotation 228 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 345.6236 0 ] /Rect [ 210.4228 354.7736 235.4628 366.7736 ] /Subtype /Link /Type /Annot >> endobj % 'FormXob.b0457f0a414020c0d759fda1eca85a59': class PDFImageXObject 229 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 326 /Length 5649 /Mask [ 255 255 255 255 255 255 ] /Subtype /Image /Type /XObject /Width 328 >> stream Gb"/j%?g%UZ3J#BI3&r7WB`YT;sN1`G3l0]4+)uos=zzzzzzzzzzzzzzz!!"hG!r*X&g\)WeRk,_hk5Y8/#eVKpP2LHk]I#E>Y@HKJR5oL4"0Y9=0BI>X#J1j[#O(s'8*CIij0ctJPMLIu-aS)Hq6gmMJ+AN:[s/p$j2l1$[?Ik%?OX>g[4P>^lFu%TnSXZ4CcCVZ;\d9`E?"9+pMB6[71h5F!WL)/$a2qQTBp.<*i2e2'1':sIUS!WEo*[nL:jS"cb'KmVY9C\0mJ]0)SNhm'f\gTr(^8GH.TuM:S5TZ0"f3i::0TGI\C'>hrUpb^h^U6=CndeS^Ue('f-/@NRo)4:U]P=cL5UVcW&g[?>E4rfs&b9&$:_W'>2>#NE\=6#`*XH)-#jR8rjI+qKLkq`q9ca[KLT$LQWQC@?lO\31+uOX*GTEMFD+/1p,^:?H,qMrX;8MQ0GYP%F?ABpj41WjJL0*B9[bi8GX0L"aAX2:uJAU?XG&%pG*eM&a+YStXbaVHMSs?&N[u/@PY;#O#TBI;,3)7G:"CD\QS&f/7q$pAOS2+esY@+ZQ@@eA:G^GYP%F?AH=313N)t*r]D6Ae/5"K@aZ-i,p@GrB2.(agAnM)SU:2CGL&%\qWFU+8l!nR5K6V-Cl8cPGs2dDXa)G'>4$YR2oUtWIredA?QNn-;t,P*TU/:CGL&%g&YND`Ic\f`-LY]qg17qU[>?dj]I$P^Y>+MT//c)Y_/$>en63l"dFDgX-;t)OFUDFW9FP6C(c-KO33UHB_.s4$3eGGO:$)ag/)W9f3-_QUf4.`VTr`[/(^Gol2O4VD.%X[R_>3eI)dPI"QpY%D[?K8GClV?Q*:KHta_32[ZdYfp1XkBK]V_mS:U>IcM6rP^u)]Ug>,3USQ(fXRrjWIi_.F^G*Rg19d4F[F%XiPoeQ#@$P6lln+0'h$[aiB51,*tO+a@+a2OQ7DrSap2!&K2X-dMS;FgG/QiS"?li^^Z\2ZDkn(U[[on60(\rX07`&\Q\\V=VP+FQ<\?rl:-1]-5(VWYeuF9Jf7`Tai#!$1l0YQ&TQ_q*agEII[74?uF+]!sqP(*9+n5O7u,e:rCfCX3W9=Eo@Vi3dWk=t`!'7t/]uJ=47>,Na.BJ$StOTD.mUh`]XSGl7iMa]?7D2ii8jgR+)Vi:WQD?>C@BAKUs9ai;0_2c"d+gR+)&i:WQ??3f0tiXB/.C#cU@rI/6Cr5%\XA%W;Y-c?\2IacMVqkKX?$#p0Qh[K*;d%6>.nG:C#Y@G$Q@K`ml[.Ls)l2C=/fYQl4K>!<$6AQDiIacqb:P5/(#r.%`DoR,E]7geNGl;4]YJYPrEX?'%W2e`$+@e=-'tjN"L"G:q#YB[#+52)/Dg(^f68$+?&$pL$^5J(knG5KgYH(j`^Pe10Gl7ZHaZdQ,"TK2$]L-Q,E:>mhYK8--l\&SN#MS(GbLuL/n/XK-*PO%sXi<\#PZ2"?Fn`tLC49hs5KP;n8U[<=&k%$]rd,6hCa9B00njP=gk4Aj"$t`i]e*hrl^7,2r@oS]hZ+CbaW::dho-%EKnuh:7msY%mR&%ci#m.nV[)c7BGn)5\t?Q?oPDBam1Z&<^)U"pU,V))9%G7qouV4iJ0:>_ou&6;2MVG:U>IcM6IA+sP^iR8sp7g<#4<2#"0]jQMrL6$2PF7'T'%L=gi(rBDk2T:qr"l64e627;*f'I,C$=epA/H2(1*1G_/"a[]Y<&*C(i=HX],!Hqe2lBC6Q*BCRm>qDHI+r-?sC%:$Os.:n(,q]Jb&\lhat]2YdQ\9ighrD)#Sci,o?G?hVS?mR=r*@>)cXhJ7ADQ1OS(EA/bLkk&N:2D_hoIUilPdcfh6:PArfQ,]-'m-fC6LZ0f-/X.V?+mA?3b`>LS"$5Mm)*MqB9naY@EO^\mbW;]lEO&L+NRDPHhsi(h:6s3!"-,%]I&8TOJ2s(9WT2mhp2n;e/EFnL1m2eA_Wg,.Gl)''",^IH#[2>Y?tIno%L7tY2:'qH_HEF/rnS^fL+2J4DSNSn\FH=i\h8`f.-JZ`bqm34J".fD\a`D0WoY%rkd@[c&$[WjI'hh>.fmS(Np"j0AGDXr\hG6I[^"@O.P6HgmASO-#sj?E`t'i&+i5XQt#td9#*-G`C<&2nf4_n20#g3Oi#W)Qus)Hi<3i;(a)6E1c&G?D$TCom)7D)mAf.Ul!]qI\&nGm`,iU]Z09$R+H&AoN0jT;r(m"kqlNS],p52Ofa5e0u@7TqsCYb1Od)6s&;2UGDZX<5(pIb'tfRSb%pO39Wo9T8L8Z)QJZ!YDJcmV_3\Y_kV<4CrqKYXLK4]2^.PJFEOm`FfPbATfi`6-%?N#/npQNXD%U(*"3Gb&orlQ`_q5EE`!q-ase>CJ(`.otXY4!0=sm3PM1!o.U.A&S]0=0G,\s6@BYXpG`C;a\`n853^8R>=g[e3[K*G$97sl8X[;EEb#V3+8:KTq%'^mo)=\WKrPZ@Ol+@CYf6V3?FS5LZIsYY&I+l)U@BDT?IZ3e*MV!*$dbF*6&<1CQ3:6fRj7UMIH[YUoe)SG`]KUVVld%!NG.>d1a(r=OH,f0r5a1nbG.>A0a(r=OH-GU#=OVD8l#uG:1Sq28:4>?a26Tk($5-h6j?K:_#&?e=Y%_FkXg_.4#YOVI"Ph2P$#MaZ=d)l"d?K:_#5d*DI5C2@k]&1qmWU.W?]KV0tS[N7<>d^-`mCua%rhE83L\V>@m7'ZkYj8i)`,!"L$%!]Is3FbX1[p_7(s?4>35WGrR?(cBrG=b$4u+Wq`c/T:p[ocB9BT'ZpF4#YB0,VI=*;4?].84?>HIbV1#V!r2oodO]Q=b.c)6?qD)j!`p6C,nlg*)Hr2bSkL4t5QR`T=fD_B3)Qs7uoK%Ef5Hi&G@Y^NV[!F>6/qk1>MMd7Mm:sU;dOUo#Zl;ZA[gHH^LjAq9UA0N.odH9Y;#Gocgp0rL3l^5eT,;4PETLV4'qkLBiu&Q7nbQc&Y7Gm\_\Ki(l]Y>]5*!_1W4rOCj7UM\?6=t#7jRk]f6D_LQIdM`?U'#L]Z09$'tle->61qtqIEm8&+%TWCV2hC]nUYIDB`E5^`GRGb:QEu]T0:]%bSI%n2eR<,%1.?_%^%np[p#'tO?eG))]l*=#7_[hiBni+5f/&NWKI*K;0(Q@EpB7\iqW-8@rnbB-1i'pC]KZ-cYJ6WE-9,>louSk6SbBLIi-:75-[:((G%ne_)Qus+>3gZ,_=8GI:L[Y.D2'TC53Va`hgb9tmdTf,No7&=#[m:J\VSj^I1l8-hJ^)ip2f28XQT5%D/Tr0I0fH#.X2u/Q.P"ER9hU3P"P;0/\`$-)mt+;b6un$'dr=8Lo6l3KJ@-uhlZIdlO`ken8"XMf-bgV'6oMg-[<<XMf-dendstream endobj % 'Page23': class PDFPage 230 0 obj % Page dictionary << /Annots [ 225 0 R 227 0 R 228 0 R ] /Contents 354 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << /FormXob.b0457f0a414020c0d759fda1eca85a59 229 0 R /FormXob.e426aed04efc58a2635ba06dfa966651 226 0 R >> >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'FormXob.0fb62db63e29f7a22c3f1467db7a707b': class PDFImageXObject 231 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 326 /Length 6759 /Mask [ 255 255 255 255 255 255 ] /Subtype /Image /Type /XObject /Width 300 >> stream Gb"/lbE_*9(e+h66E*d$MAHq^".@,]d/.-_jMIdC"%'YR!8W"9j0nU\KQMqGkgHbqM?9/sZVAS4\"8]/1G1XXk/b'j+IOJ7JqIToN!g,Y3AN3H8ES"'i#nF4j+;noNf4>UOuY9M3(W2Q\DSKt,NFB.A<)TV%[&h-/iZDaaLL.NR3UaDK4L"$$P&=[1+kOWk/b'j+IOJ7JqIToN!g,Y3AN3HQlOBLp3O85H2h-j0p<2cp]G<@t0#B^D83r!J^)S>-n;N)"cK4EL,G[F(@1.mDA;Ud#%[+ph(/!A`%0sup)%.E0o49&?JGSBl]gkV="p,%OPSjWt5X"6$hBSgYUO[u-er0Y?P$'RDY(1iXl+KSXH%l;(ai#%u*$c21#]Pl!SGr$cW2H9EH\@W]IrLLnSc6Gk13`R"#Kbcc*ulPIVfT9Le?_p=4[R]2/KKh6/_;o9i\.>dU?Qi!7cer40W+585/+7(@'%8Wr=?l)Tqs^c!h(#o-)X/+ZX<2T;I<`0LVf1LDkntJB+*GeUGS./&4VMcglGEa6`DHLs]XN*!Vf1UGko$[Wp>li/K;VrI"iN\^7CpH\ck[/taV=!*XZ(kl81%!="<>pP3(W1&[qr`"Pg<.o4[Rmh&(SRO&C#C+=KSEO(Tft[Boe(3,k5ePTTiGgb+C'SSK-BhKsp?Vd",%>U8-WKB+6@RBVE*8ENIhi#oQsH7&.EDTlJ*+_:6;$kCjIk'hZj>bAt,@:Uahgti4??P:gDiBR4Z^.utrf@T?apFWBIP8ns4fI7^&)'#`Jk;`6]R\HQ=:d7hBp#Q+D[6EkU^2L4M?o9t'(B=J_Z*,WiE'm^Z+>--3)Z19O0HC%l#c[kpQ%VDPY>Rg(1k3NQt.D!,l`Q[8:?S9OB-tYU\+6AZDcU"^&ZdLk^6/+RC9T%g.q#*It%"-b^YClCLe1A-9#N`\0h't8S@d+kD^'`X.&.Qb>ko;JhiZOXHSKf0)O.H_V1aF3[_a0mhA+":X=8=7-.[#F)[3LR%?lmE,-X@*N*,CD^E%(pbrNha\_48lcY*dAc*L$K4LqQM>,1!GF?_C6:3M'3lEm.ftlLTKQNF7f[A#+EG+UaOGo:X^d3"KFN)hO0A]i/MP23X5$_%C_>(tT3@Xn<&C*N(!r%_<&++IOIFYUcBY9U]*t8:!uX`&ME^QE1f>OtP2i/KDu=Kogr9"-EXg$S-`V36%sTP+&)?K1f7N=!Y^P9f3QlG&T`7;B.QTK,J1(?DZ-r1aFAE34MqL#Rs@Ke>40jbQfm\HLh!I8OeZU_0YsN+j#P/`5.TIAo"u1L*SV`#FETmTHQma_SIPi$W2Eek&O95#e7MfXOS.dB&*Mm-p'#f><`qjo[64G:e>gS>4M0[VD6MSVJQh>jK5ENE-s?2Ia0OKn_G(siu;ng.Bc:o_R8E.ji>t^lH7u2ElI2VbPP/'XEWn!If#XT`nP7@>GJk?%_c$=p3_7mcQhh-L;e4%76QT+7_OZhR^8NPATj\+JX!Op?-KV`i1RKP/"h869i9oPHMNn7Z=N\3LPu\qRU3\t-&'Ck&jUnGFBgEFNNt/($VB6o]iiUa)LO;[?ug]D1"q6n[2I_:^qh(,8`e))HJ]#YJ5a"[KBDu*0;Rd]I>!hRiS[V0&fQqM-lcJa4[MM6&p7%V/K)aDnbcZa#*$3UKAJn5WT)ifL*S\b#FB3%THVF5_SN(G4(q/_UMt1O/.NS]UaR3flYh9e'/>K+FLQd!t/RRTTea;^FSm,PmtAm:M2bgp?jj]_>(@9ZaqQeVuG3,l+`7`@$R*'B-"Ft[[\J;&>Y*tJjigo."P]FN(5g^?4!G\]n=Kl&Mf/m,8r05S0rW=-3GB#)*a&$!UI=4+iBpVN5?'YVAsYc[<8Qs8S.]&U6u-p8%Uf&@1L"5O?3H$aahHXU.5PrEpB_t]m^3cRtKUP?>rp=;;>=Z$]/YBWHF3j5J(#Na-+mY.dt\_F,5*F*VRo?N6+eB+Z7.USJ><2P*($O`#p`N;IdF"cm^YDhl&EA1j&a^GskXqGY!F'lPHObL\DX(\U/Qi$m`HGAZ%f6q&obJV0kNK,p73B9E&AY?:s^W+[M>E:>DtYdZCNXsK>`34PdJV>s?p#HN$bKqb0RiDfjU[so*G(SLfoV)qrBE3NfQIa`e-C40@D`>dGV'9>?.866%8WUhbp83(W1+n#24Qp#@0_-,$WB']L7',m3'G$?;0OOth326N/_$m&hS/9#^i9ah/Jq91'[EZXb>#ONa)SO@(0$P$'OW7RJ.@ZXbbKJ2g)3a`oKLP.<=h%#&5p%#Op)B`OTSK0R'=q?pB>J*i,T2GmP"E7#S]%QT$:O@r%$i*q%gL88Ap%PAiiU[N*:7+*Ij#FA0Fd#^)?_SP?q)B+c;U2Y&X3>e,Y8]q)lG^DuAN5ECWrB"#0@W505dg7*l!__r6'3S9dNi8mNj(GA<'caTB].%?Y`L)I6Q`;>H*4/7Zcn$&:(^D]oMhf&s!]+iC6=,S!>d28NlWl9IVr[C:,HoeWMQ2oRebG+&af)$g<\<4d2tNuWidUntcWZr?]Y[Olqe4cnq?dHZXDuVADi[EPG]oDamjU&:eKh,g5Z-)HI7,@r'e!!UQ]EG_io'*UH.6oM^:s72m-Q7&7_P_N7p1tB(uKSK$.%)tcfL6>8%2ON@NK%%$oHg_KpecQghls<%dGC/L?X_EpADZ9F4QNA2[c"t=eDeMCW_cDC3jB8moJ9'hH&U.,iG=UO'0Yn_u&!Iio4=YM6Cn^'l,&T/3,Gj-o4:NbZg)kI]R+(b7$46DnBhu&gXm_#^4sqm5(IgTC(7.WO37rU#u!T3*U-D_pjTsOk9o(k3jDX\FM8%qnZKKi#jl*N=KtFRoqJtP?nK\T5.:e``_Ee,>,:bh4*Q"GbQ:P=*K/o"<D?H[!Yh.&_KN/ZUFFaJjYd7E>LA?aoel^.JH]BiOGrer:)cMBNFr`k'?MdBPKS/B_"\%;7Bd\;/So5eep*?,rih$&gCCNI]5Gt#:[XrZEuCiHj!;cgE30t$4b;!nqEI]nCp>#]C=GGfANU2a!@hS8$[jrOEg>-7`iY/\pfbrE#;*U#ah8H>0@O.>.f62=9]N1<=f_%Z>21UWcSkprPH47XifV!YW<*Q5D!`SD<*Wb,]?JjHf7aq[;.c*1Wt_95`#'/g1c8;2?#\.7jtLt.4&Q"=QZUUQ^nKr2QP:KJ9*"cfd;cQ2XC'SDK7arOLTtmP*PN_M>CFqnMgYM:=;iQB;Y0.;q@EBm`M2n[2JA:eWL7L=t"o"_80.lIga*/9&q!?4lAK7gtS&HmsEd2qgQQNk"bQ7VJi?B:=8L!6.lZrl@"01f+@PfKt[@bTQcmaC*)k-,Z.Tn^C/t--,NsD1L:=BgQXAN\l9SVSs[>EdQr@s5C[*GhUP7Z/FU2)bF8[UN*H`#://7!HY2U-[;JpW*qSO*nbM6oqdX\'K(+>(:Y[?m:XO)7p"us]]Jddo4-0YarZ:*ms3gH#r")e18V+XWj'X1G4Zikud:Ef.lSdiCF,]@kb]@j07?1!sd`aK/O&pZKI/YAih"TCEhnK"_iLTs9#daa[C-j4@q,ALATpe*/B:[?%TXcl(\Bu@nY>f,plS`QC,r/lZQ1m/P0P>bV<*8\(!5;?Vj$CRh-/n3Xa@[l?]co.+7fVa4rW[Y]`"f,;,D"AiCsT[Mh@9#oQ02;ih1=r^)YWeSrq3OgCp/iRA(LHqVlnK(fT/V-A9sh_+Fk,\T;eo7CRdAO]oqD8.+5.?-h%YeoFSNQc#Hm)tM(u_OD*?(C)H&ki^5_EcCc.+%`lMUPAO"mdbBn+5=f($jTLLEf8/&HpU%I$^MRbKMWn5YS)M9m[PO-:T6c%(]Q])bA05O[#\[9YS'ImTJlH2TGdWqeTc1M+3!5I-'$VDDendstream endobj % 'Annot.NUMBER198': class PDFDictionary 232 0 obj << /A << /S /URI /Type /Action /URI (http://www.pyinstaller.org/browser/trunk/doc/LICENSE.GPL?rev=latest) >> /Border [ 0 0 0 ] /Rect [ 249.5849 660.7736 310.2223 672.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER199': class PDFDictionary 233 0 obj << /A << /S /URI /Type /Action /URI (http://www.pyinstaller.org/wiki/FAQ) >> /Border [ 0 0 0 ] /Rect [ 272.2229 516.7736 295.5629 528.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER200': class PDFDictionary 234 0 obj << /A << /S /URI /Type /Action /URI (http://www.pyinstaller.org) >> /Border [ 0 0 0 ] /Rect [ 306.6829 516.7736 356.1429 528.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER201': class PDFDictionary 235 0 obj << /A << /S /URI /Type /Action /URI (http://developer.apple.com/xcode) >> /Border [ 0 0 0 ] /Rect [ 255.6119 126.9736 283.9619 138.9736 ] /Subtype /Link /Type /Annot >> endobj % 'Page24': class PDFPage 236 0 obj % Page dictionary << /Annots [ 232 0 R 233 0 R 234 0 R 235 0 R ] /Contents 355 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << /FormXob.0fb62db63e29f7a22c3f1467db7a707b 231 0 R >> >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER202': class PDFDictionary 237 0 obj << /A << /S /URI /Type /Action /URI (http://sourceforge.net/downloads/mingw/) >> /Border [ 0 0 0 ] /Rect [ 85.69291 618.7736 121.8029 630.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER203': class PDFDictionary 238 0 obj << /A << /S /URI /Type /Action /URI (http://mingw-w64.sourceforge.net/) >> /Border [ 0 0 0 ] /Rect [ 85.69291 600.7736 143.4729 612.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER204': class PDFDictionary 239 0 obj << /A << /S /URI /Type /Action /URI (http://tdm-gcc.tdragon.net/) >> /Border [ 0 0 0 ] /Rect [ 85.69291 582.7736 135.6829 594.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page25': class PDFPage 240 0 obj % Page dictionary << /Annots [ 237 0 R 238 0 R 239 0 R ] /Contents 356 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER205': class PDFDictionary 241 0 obj << /A << /S /URI /Type /Action /URI (http://ftp.linuxfoundation.org/pub/lsb/bundles/released-4.0.0/sdk/) >> /Border [ 0 0 0 ] /Rect [ 350.0629 643.3736 406.7629 655.3736 ] /Subtype /Link /Type /Annot >> endobj % 'Page26': class PDFPage 242 0 obj % Page dictionary << /Annots [ 241 0 R ] /Contents 357 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER206': class LinkAnnotation 243 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 567.9236 0 ] /Rect [ 118.8329 348.7736 221.0929 360.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page27': class PDFPage 244 0 obj % Page dictionary << /Annots [ 243 0 R ] /Contents 358 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page28': class PDFPage 245 0 obj % Page dictionary << /Contents 359 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page29': class PDFPage 246 0 obj % Page dictionary << /Contents 360 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page30': class PDFPage 247 0 obj % Page dictionary << /Contents 361 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page31': class PDFPage 248 0 obj % Page dictionary << /Contents 362 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 331 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'R249': class PDFCatalog 249 0 obj % Document Root << /Outlines 251 0 R /PageLabels 363 0 R /PageMode /UseNone /Pages 331 0 R /Type /Catalog >> endobj % 'R250': class PDFInfo 250 0 obj << /Author (Giovanni Bajo & William Caban \(based on Gordon McMillan's manual\)) /CreationDate (D:20120808202510-01'00') /Creator (\(unspecified\)) /Keywords () /Producer (ReportLab PDF Library - www.reportlab.com) /Subject (\(unspecified\)) /Title (PyInstaller Manual) >> endobj % 'R251': class PDFOutlines 251 0 obj << /Count 95 /First 252 0 R /Last 305 0 R /Type /Outlines >> endobj % 'Outline.0': class OutlineEntryObject 252 0 obj << /Dest [ 172 0 R /XYZ 62.69291 597.0236 0 ] /Next 253 0 R /Parent 251 0 R /Title (Requirements) >> endobj % 'Outline.1': class OutlineEntryObject 253 0 obj << /Dest [ 172 0 R /XYZ 62.69291 263.0236 0 ] /Next 254 0 R /Parent 251 0 R /Prev 252 0 R /Title (Installing PyInstaller) >> endobj % 'Outline.2': class OutlineEntryObject 254 0 obj << /Count 12 /Dest [ 177 0 R /XYZ 62.69291 711.0236 0 ] /First 255 0 R /Last 266 0 R /Next 267 0 R /Parent 251 0 R /Prev 253 0 R /Title (Getting Started) >> endobj % 'Outline.80.0': class OutlineEntryObject 255 0 obj << /Dest [ 177 0 R /XYZ 62.69291 648.0236 0 ] /Next 256 0 R /Parent 254 0 R /Title (Build your project) >> endobj % 'Outline.80.1': class OutlineEntryObject 256 0 obj << /Dest [ 177 0 R /XYZ 62.69291 337.6236 0 ] /Next 257 0 R /Parent 254 0 R /Prev 255 0 R /Title (Allowed Options) >> endobj % 'Outline.80.2': class OutlineEntryObject 257 0 obj << /Dest [ 183 0 R /XYZ 62.69291 605.0236 0 ] /Next 258 0 R /Parent 254 0 R /Prev 256 0 R /Title (A spec file for your project) >> endobj % 'Outline.80.3': class OutlineEntryObject 258 0 obj << /Dest [ 183 0 R /XYZ 62.69291 333.4236 0 ] /Next 259 0 R /Parent 254 0 R /Prev 257 0 R /Title (Windows COM Server support) >> endobj % 'Outline.80.4': class OutlineEntryObject 259 0 obj << /Dest [ 185 0 R /XYZ 62.69291 591.8236 0 ] /Next 260 0 R /Parent 254 0 R /Prev 258 0 R /Title (Building Optimized) >> endobj % 'Outline.80.5': class OutlineEntryObject 260 0 obj << /Dest [ 185 0 R /XYZ 62.69291 389.4236 0 ] /Next 261 0 R /Parent 254 0 R /Prev 259 0 R /Title (A Note on using UPX) >> endobj % 'Outline.80.6': class OutlineEntryObject 261 0 obj << /Count 2 /Dest [ 187 0 R /XYZ 62.69291 669.0236 0 ] /First 262 0 R /Last 263 0 R /Next 264 0 R /Parent 254 0 R /Prev 260 0 R /Title (Accessing Data Files) >> endobj % 'Outline.81.0': class OutlineEntryObject 262 0 obj << /Dest [ 187 0 R /XYZ 62.69291 597.0236 0 ] /Next 263 0 R /Parent 261 0 R /Title (Adopt your application) >> endobj % 'Outline.81.1': class OutlineEntryObject 263 0 obj << /Dest [ 187 0 R /XYZ 62.69291 397.6236 0 ] /Parent 261 0 R /Prev 262 0 R /Title (Collect your data files) >> endobj % 'Outline.80.7': class OutlineEntryObject 264 0 obj << /Dest [ 187 0 R /XYZ 62.69291 227.4236 0 ] /Next 265 0 R /Parent 254 0 R /Prev 261 0 R /Title (How one-file mode works) >> endobj % 'Outline.80.8': class OutlineEntryObject 265 0 obj << /Dest [ 193 0 R /XYZ 62.69291 405.0236 0 ] /Next 266 0 R /Parent 254 0 R /Prev 264 0 R /Title (.egg files and setuptools) >> endobj % 'Outline.80.9': class OutlineEntryObject 266 0 obj << /Dest [ 196 0 R /XYZ 62.69291 753.0236 0 ] /Parent 254 0 R /Prev 265 0 R /Title (Multipackage function) >> endobj % 'Outline.3': class OutlineEntryObject 267 0 obj << /Count 4 /Dest [ 196 0 R /XYZ 62.69291 471.0236 0 ] /First 268 0 R /Last 271 0 R /Next 272 0 R /Parent 251 0 R /Prev 254 0 R /Title (PyInstaller Utilities) >> endobj % 'Outline.82.0': class OutlineEntryObject 268 0 obj << /Dest [ 196 0 R /XYZ 62.69291 438.0236 0 ] /Next 269 0 R /Parent 267 0 R /Title (ArchiveViewer) >> endobj % 'Outline.82.1': class OutlineEntryObject 269 0 obj << /Dest [ 199 0 R /XYZ 62.69291 753.0236 0 ] /Next 270 0 R /Parent 267 0 R /Prev 268 0 R /Title (BinDepend) >> endobj % 'Outline.82.2': class OutlineEntryObject 270 0 obj << /Dest [ 199 0 R /XYZ 62.69291 633.8236 0 ] /Next 271 0 R /Parent 267 0 R /Prev 269 0 R /Title (GrabVersion \(Windows\)) >> endobj % 'Outline.82.3': class OutlineEntryObject 271 0 obj << /Dest [ 199 0 R /XYZ 62.69291 424.6236 0 ] /Parent 267 0 R /Prev 270 0 R /Title (Analyzing Dependencies) >> endobj % 'Outline.4': class OutlineEntryObject 272 0 obj << /Count 11 /Dest [ 199 0 R /XYZ 62.69291 364.6236 0 ] /First 273 0 R /Last 275 0 R /Next 284 0 R /Parent 251 0 R /Prev 267 0 R /Title (Spec Files) >> endobj % 'Outline.83.0': class OutlineEntryObject 273 0 obj << /Dest [ 199 0 R /XYZ 62.69291 331.6236 0 ] /Next 274 0 R /Parent 272 0 R /Title (Introduction) >> endobj % 'Outline.83.1': class OutlineEntryObject 274 0 obj << /Dest [ 200 0 R /XYZ 62.69291 515.8236 0 ] /Next 275 0 R /Parent 272 0 R /Prev 273 0 R /Title (TOC Class \(Table of Contents\)) >> endobj % 'Outline.83.2': class OutlineEntryObject 275 0 obj << /Count 8 /Dest [ 202 0 R /XYZ 62.69291 250.6236 0 ] /First 276 0 R /Last 283 0 R /Parent 272 0 R /Prev 274 0 R /Title (Target Subclasses) >> endobj % 'Outline.84.0': class OutlineEntryObject 276 0 obj << /Dest [ 202 0 R /XYZ 62.69291 220.6236 0 ] /Next 277 0 R /Parent 275 0 R /Title (Analysis) >> endobj % 'Outline.84.1': class OutlineEntryObject 277 0 obj << /Dest [ 206 0 R /XYZ 62.69291 419.0236 0 ] /Next 278 0 R /Parent 275 0 R /Prev 276 0 R /Title (PYZ) >> endobj % 'Outline.84.2': class OutlineEntryObject 278 0 obj << /Dest [ 206 0 R /XYZ 62.69291 261.8236 0 ] /Next 279 0 R /Parent 275 0 R /Prev 277 0 R /Title (PKG) >> endobj % 'Outline.84.3': class OutlineEntryObject 279 0 obj << /Dest [ 207 0 R /XYZ 62.69291 659.0236 0 ] /Next 280 0 R /Parent 275 0 R /Prev 278 0 R /Title (EXE) >> endobj % 'Outline.84.4': class OutlineEntryObject 280 0 obj << /Dest [ 207 0 R /XYZ 62.69291 207.8236 0 ] /Next 281 0 R /Parent 275 0 R /Prev 279 0 R /Title (DLL) >> endobj % 'Outline.84.5': class OutlineEntryObject 281 0 obj << /Dest [ 208 0 R /XYZ 62.69291 753.0236 0 ] /Next 282 0 R /Parent 275 0 R /Prev 280 0 R /Title (COLLECT) >> endobj % 'Outline.84.6': class OutlineEntryObject 282 0 obj << /Dest [ 208 0 R /XYZ 62.69291 595.8236 0 ] /Next 283 0 R /Parent 275 0 R /Prev 281 0 R /Title (Tree) >> endobj % 'Outline.84.7': class OutlineEntryObject 283 0 obj << /Dest [ 208 0 R /XYZ 62.69291 358.6236 0 ] /Parent 275 0 R /Prev 282 0 R /Title (MERGE) >> endobj % 'Outline.5': class OutlineEntryObject 284 0 obj << /Count 11 /Dest [ 210 0 R /XYZ 62.69291 297.473 0 ] /First 285 0 R /Last 290 0 R /Next 296 0 R /Parent 251 0 R /Prev 272 0 R /Title (When Things Go Wrong) >> endobj % 'Outline.85.0': class OutlineEntryObject 285 0 obj << /Dest [ 210 0 R /XYZ 62.69291 264.473 0 ] /Next 286 0 R /Parent 284 0 R /Title (Recipes and Instructions for special Modules) >> endobj % 'Outline.85.1': class OutlineEntryObject 286 0 obj << /Count 3 /Dest [ 210 0 R /XYZ 62.69291 204.473 0 ] /First 287 0 R /Last 289 0 R /Next 290 0 R /Parent 284 0 R /Prev 285 0 R /Title (Finding out What Went Wrong) >> endobj % 'Outline.86.0': class OutlineEntryObject 287 0 obj << /Dest [ 210 0 R /XYZ 62.69291 174.473 0 ] /Next 288 0 R /Parent 286 0 R /Title (Buildtime Warnings) >> endobj % 'Outline.86.1': class OutlineEntryObject 288 0 obj << /Dest [ 213 0 R /XYZ 62.69291 521.8236 0 ] /Next 289 0 R /Parent 286 0 R /Prev 287 0 R /Title (Getting Debug Messages) >> endobj % 'Outline.86.2': class OutlineEntryObject 289 0 obj << /Dest [ 213 0 R /XYZ 62.69291 387.6236 0 ] /Parent 286 0 R /Prev 288 0 R /Title (Getting Python's Verbose Imports) >> endobj % 'Outline.85.2': class OutlineEntryObject 290 0 obj << /Count 5 /Dest [ 213 0 R /XYZ 62.69291 182.2236 0 ] /First 291 0 R /Last 295 0 R /Parent 284 0 R /Prev 286 0 R /Title (Helping PyInstaller Find Modules) >> endobj % 'Outline.87.0': class OutlineEntryObject 291 0 obj << /Dest [ 213 0 R /XYZ 62.69291 152.2236 0 ] /Next 292 0 R /Parent 290 0 R /Title (Extending the Path) >> endobj % 'Outline.87.1': class OutlineEntryObject 292 0 obj << /Dest [ 217 0 R /XYZ 62.69291 565.4236 0 ] /Next 293 0 R /Parent 290 0 R /Prev 291 0 R /Title (Listing Hidden Imports) >> endobj % 'Outline.87.2': class OutlineEntryObject 293 0 obj << /Dest [ 222 0 R /XYZ 62.69291 717.0236 0 ] /Next 294 0 R /Parent 290 0 R /Prev 292 0 R /Title (Extending a Package's __path__) >> endobj % 'Outline.87.3': class OutlineEntryObject 294 0 obj << /Dest [ 222 0 R /XYZ 62.69291 462.0236 0 ] /Next 295 0 R /Parent 290 0 R /Prev 293 0 R /Title (Changing Runtime Behavior) >> endobj % 'Outline.87.4': class OutlineEntryObject 295 0 obj << /Dest [ 222 0 R /XYZ 62.69291 184.6236 0 ] /Parent 290 0 R /Prev 294 0 R /Title (Adapting to being "frozen") >> endobj % 'Outline.6': class OutlineEntryObject 296 0 obj << /Count 3 /Dest [ 224 0 R /XYZ 62.69291 687.0236 0 ] /First 297 0 R /Last 297 0 R /Next 300 0 R /Parent 251 0 R /Prev 284 0 R /Title (Miscellaneous) >> endobj % 'Outline.88.0': class OutlineEntryObject 297 0 obj << /Count 2 /Dest [ 224 0 R /XYZ 62.69291 654.0236 0 ] /First 298 0 R /Last 299 0 R /Parent 296 0 R /Title (Self-extracting executables) >> endobj % 'Outline.89.0': class OutlineEntryObject 298 0 obj << /Dest [ 224 0 R /XYZ 62.69291 540.0236 0 ] /Next 299 0 R /Parent 297 0 R /Title (One Pass Execution) >> endobj % 'Outline.89.1': class OutlineEntryObject 299 0 obj << /Dest [ 224 0 R /XYZ 62.69291 351.0236 0 ] /Parent 297 0 R /Prev 298 0 R /Title (Two Pass Execution) >> endobj % 'Outline.7': class OutlineEntryObject 300 0 obj << /Count 3 /Dest [ 230 0 R /XYZ 62.69291 573.0236 0 ] /First 301 0 R /Last 303 0 R /Next 304 0 R /Parent 251 0 R /Prev 296 0 R /Title (PyInstaller Archives) >> endobj % 'Outline.90.0': class OutlineEntryObject 301 0 obj << /Dest [ 230 0 R /XYZ 62.69291 540.0236 0 ] /Next 302 0 R /Parent 300 0 R /Title (Archives Introduction) >> endobj % 'Outline.90.1': class OutlineEntryObject 302 0 obj << /Dest [ 230 0 R /XYZ 62.69291 432.0236 0 ] /Next 303 0 R /Parent 300 0 R /Prev 301 0 R /Title (ZlibArchive) >> endobj % 'Outline.90.2': class OutlineEntryObject 303 0 obj << /Dest [ 230 0 R /XYZ 62.69291 252.0236 0 ] /Parent 300 0 R /Prev 302 0 R /Title (CArchive) >> endobj % 'Outline.8': class OutlineEntryObject 304 0 obj << /Dest [ 236 0 R /XYZ 62.69291 699.0236 0 ] /Next 305 0 R /Parent 251 0 R /Prev 300 0 R /Title (License) >> endobj % 'Outline.9': class OutlineEntryObject 305 0 obj << /Count 25 /Dest [ 236 0 R /XYZ 62.69291 504.0236 0 ] /First 306 0 R /Last 320 0 R /Parent 251 0 R /Prev 304 0 R /Title (Appendix) >> endobj % 'Outline.91.0': class OutlineEntryObject 306 0 obj << /Count 3 /Dest [ 236 0 R /XYZ 62.69291 373.6236 0 ] /First 307 0 R /Last 309 0 R /Next 310 0 R /Parent 305 0 R /Title (Building the bootloaders) >> endobj % 'Outline.92.0': class OutlineEntryObject 307 0 obj << /Dest [ 236 0 R /XYZ 62.69291 289.6236 0 ] /Next 308 0 R /Parent 306 0 R /Title (Development tools) >> endobj % 'Outline.92.1': class OutlineEntryObject 308 0 obj << /Dest [ 240 0 R /XYZ 62.69291 573.0236 0 ] /Next 309 0 R /Parent 306 0 R /Prev 307 0 R /Title (Building) >> endobj % 'Outline.92.2': class OutlineEntryObject 309 0 obj << /Dest [ 240 0 R /XYZ 62.69291 295.6236 0 ] /Parent 306 0 R /Prev 308 0 R /Title (Linux Standard Base \(LSB\) binary) >> endobj % 'Outline.91.1': class OutlineEntryObject 310 0 obj << /Count 5 /Dest [ 242 0 R /XYZ 62.69291 387.0236 0 ] /First 311 0 R /Last 315 0 R /Next 316 0 R /Parent 305 0 R /Prev 306 0 R /Title (mf.py: A Modulefinder Replacement) >> endobj % 'Outline.93.0': class OutlineEntryObject 311 0 obj << /Dest [ 242 0 R /XYZ 62.69291 291.0236 0 ] /Next 312 0 R /Parent 310 0 R /Title (ImportTracker) >> endobj % 'Outline.93.1': class OutlineEntryObject 312 0 obj << /Dest [ 242 0 R /XYZ 62.69291 186.0236 0 ] /Next 313 0 R /Parent 310 0 R /Prev 311 0 R /Title (analyze_one\(\)) >> endobj % 'Outline.93.2': class OutlineEntryObject 313 0 obj << /Dest [ 244 0 R /XYZ 62.69291 693.0236 0 ] /Next 314 0 R /Parent 310 0 R /Prev 312 0 R /Title (Module Classes) >> endobj % 'Outline.93.3': class OutlineEntryObject 314 0 obj << /Dest [ 244 0 R /XYZ 62.69291 546.0236 0 ] /Next 315 0 R /Parent 310 0 R /Prev 313 0 R /Title (code scanning) >> endobj % 'Outline.93.4': class OutlineEntryObject 315 0 obj << /Dest [ 244 0 R /XYZ 62.69291 411.0236 0 ] /Parent 310 0 R /Prev 314 0 R /Title (Hooks) >> endobj % 'Outline.91.2': class OutlineEntryObject 316 0 obj << /Count 3 /Dest [ 245 0 R /XYZ 62.69291 474.8236 0 ] /First 317 0 R /Last 319 0 R /Next 320 0 R /Parent 305 0 R /Prev 310 0 R /Title (Advanced Hook Usage) >> endobj % 'Outline.94.0': class OutlineEntryObject 317 0 obj << /Dest [ 245 0 R /XYZ 62.69291 402.8236 0 ] /Next 318 0 R /Parent 316 0 R /Title (Warnings) >> endobj % 'Outline.94.1': class OutlineEntryObject 318 0 obj << /Dest [ 245 0 R /XYZ 62.69291 291.8236 0 ] /Next 319 0 R /Parent 316 0 R /Prev 317 0 R /Title (Cross Reference) >> endobj % 'Outline.94.2': class OutlineEntryObject 319 0 obj << /Dest [ 245 0 R /XYZ 62.69291 210.8236 0 ] /Parent 316 0 R /Prev 318 0 R /Title (mf Usage) >> endobj % 'Outline.91.3': class OutlineEntryObject 320 0 obj << /Count 10 /Dest [ 246 0 R /XYZ 62.69291 342.6236 0 ] /First 321 0 R /Last 330 0 R /Parent 305 0 R /Prev 316 0 R /Title (iu.py: An imputil Replacement) >> endobj % 'Outline.95.0': class OutlineEntryObject 321 0 obj << /Dest [ 246 0 R /XYZ 62.69291 222.6236 0 ] /Next 322 0 R /Parent 320 0 R /Title (ImportManager) >> endobj % 'Outline.95.1': class OutlineEntryObject 322 0 obj << /Dest [ 247 0 R /XYZ 62.69291 705.0236 0 ] /Next 323 0 R /Parent 320 0 R /Prev 321 0 R /Title (ImportDirector) >> endobj % 'Outline.95.2': class OutlineEntryObject 323 0 obj << /Dest [ 247 0 R /XYZ 62.69291 618.0236 0 ] /Next 324 0 R /Parent 320 0 R /Prev 322 0 R /Title (PathImportDirector) >> endobj % 'Outline.95.3': class OutlineEntryObject 324 0 obj << /Dest [ 247 0 R /XYZ 62.69291 513.0236 0 ] /Next 325 0 R /Parent 320 0 R /Prev 323 0 R /Title (Owner) >> endobj % 'Outline.95.4': class OutlineEntryObject 325 0 obj << /Dest [ 247 0 R /XYZ 62.69291 318.0236 0 ] /Next 326 0 R /Parent 320 0 R /Prev 324 0 R /Title (Packages) >> endobj % 'Outline.95.5': class OutlineEntryObject 326 0 obj << /Dest [ 248 0 R /XYZ 62.69291 753.0236 0 ] /Next 327 0 R /Parent 320 0 R /Prev 325 0 R /Title (Possibilities) >> endobj % 'Outline.95.6': class OutlineEntryObject 327 0 obj << /Dest [ 248 0 R /XYZ 62.69291 606.0236 0 ] /Next 328 0 R /Parent 320 0 R /Prev 326 0 R /Title (Compatibility) >> endobj % 'Outline.95.7': class OutlineEntryObject 328 0 obj << /Dest [ 248 0 R /XYZ 62.69291 525.0236 0 ] /Next 329 0 R /Parent 320 0 R /Prev 327 0 R /Title (Performance) >> endobj % 'Outline.95.8': class OutlineEntryObject 329 0 obj << /Dest [ 248 0 R /XYZ 62.69291 444.0236 0 ] /Next 330 0 R /Parent 320 0 R /Prev 328 0 R /Title (Limitations) >> endobj % 'Outline.95.9': class OutlineEntryObject 330 0 obj << /Dest [ 248 0 R /XYZ 62.69291 267.0236 0 ] /Parent 320 0 R /Prev 329 0 R /Title (iu Usage) >> endobj % 'R331': class PDFPages 331 0 obj % page tree << /Count 31 /Kids [ 6 0 R 79 0 R 154 0 R 172 0 R 177 0 R 179 0 R 183 0 R 185 0 R 187 0 R 193 0 R 196 0 R 199 0 R 200 0 R 202 0 R 206 0 R 207 0 R 208 0 R 210 0 R 213 0 R 217 0 R 222 0 R 224 0 R 230 0 R 236 0 R 240 0 R 242 0 R 244 0 R 245 0 R 246 0 R 247 0 R 248 0 R ] /Type /Pages >> endobj % 'R332': class PDFStream 332 0 obj % page stream << /Length 2711 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 729.0236 cm q BT 1 0 0 1 0 4 Tm 147.1349 0 Td 24 TL /F2 20 Tf 0 0 0 rg (PyInstaller Manual) Tj T* -147.1349 0 Td ET Q Q q 1 0 0 1 62.69291 704.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 33.02937 0 Td (Version:) Tj T* -33.02937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (PyInstaller 2.0) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 689.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 18.58937 0 Td (Homepage:) Tj T* -18.58937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (http://www.pyinstaller.org) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 674.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 36.93937 0 Td (Author:) Tj T* -36.93937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Giovanni Bajo & William Caban \(based on Gordon McMillan's manual\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 659.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 32.48937 0 Td (Contact:) Tj T* -32.48937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (rasky@develer.com) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 644.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 28.02937 0 Td (Revision:) Tj T* -28.02937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL ($Rev$) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 629.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 12.47937 0 Td (Source URL:) Tj T* -12.47937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL ($HeadURL$) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 614.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 22.48937 0 Td (Copyright:) Tj T* -22.48937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This document has been placed in the public domain.) Tj T* ET Q Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 196.7649 0 Td (PyInstaller Manual -) Tj T* -196.7649 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (1) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R333': class PDFStream 333 0 obj % page stream << /Length 9280 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 732.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Contents) Tj T* ET Q Q q 1 0 0 1 62.69291 96.02362 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 615 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Requirements) Tj T* ET Q Q q 1 0 0 1 397.8898 615 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 66.44 0 Td (4) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 597 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Installing ) Tj /F3 10 Tf 0 0 0 rg (PyInstaller) Tj T* ET Q Q q 1 0 0 1 397.8898 597 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 66.44 0 Td (4) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 579 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Getting Started) Tj T* ET Q Q q 1 0 0 1 397.8898 579 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 66.44 0 Td (5) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 561 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Build your project) Tj T* ET Q Q q 1 0 0 1 397.8898 561 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (5) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 543 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Allowed Options) Tj T* ET Q Q q 1 0 0 1 397.8898 543 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (5) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 525 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (A spec file for your project) Tj T* ET Q Q q 1 0 0 1 397.8898 525 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 507 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Windows COM Server support) Tj T* ET Q Q q 1 0 0 1 397.8898 507 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 489 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Building Optimized) Tj T* ET Q Q q 1 0 0 1 397.8898 489 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (8) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 471 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (A Note on using UPX) Tj T* ET Q Q q 1 0 0 1 397.8898 471 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (8) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 453 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Accessing Data Files) Tj T* ET Q Q q 1 0 0 1 397.8898 453 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 435 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Adopt your application) Tj T* ET Q Q q 1 0 0 1 397.8898 435 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 417 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Collect your data files) Tj T* ET Q Q q 1 0 0 1 397.8898 417 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 399 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (How one-file mode works) Tj T* ET Q Q q 1 0 0 1 397.8898 399 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 381 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (.egg files and setuptools) Tj T* ET Q Q q 1 0 0 1 397.8898 381 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (10) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 363 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Multipackage function) Tj T* ET Q Q q 1 0 0 1 397.8898 363 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (11) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 345 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (PyInstaller Utilities) Tj T* ET Q Q q 1 0 0 1 397.8898 345 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 60.88 0 Td (11) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 327 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (ArchiveViewer) Tj T* ET Q Q q 1 0 0 1 397.8898 327 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (11) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 309 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (BinDepend) Tj T* ET Q Q q 1 0 0 1 397.8898 309 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (12) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 291 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (GrabVersion \(Windows\)) Tj T* ET Q Q q 1 0 0 1 397.8898 291 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (12) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 273 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Analyzing Dependencies) Tj T* ET Q Q q 1 0 0 1 397.8898 273 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (12) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 255 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Spec Files) Tj T* ET Q Q q 1 0 0 1 397.8898 255 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 60.88 0 Td (12) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 237 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Introduction) Tj T* ET Q Q q 1 0 0 1 397.8898 237 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (12) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 219 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (TOC Class \(Table of Contents\)) Tj T* ET Q Q q 1 0 0 1 397.8898 219 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (13) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 201 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Target Subclasses) Tj T* ET Q Q q 1 0 0 1 397.8898 201 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (14) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 183 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Analysis) Tj T* ET Q Q q 1 0 0 1 397.8898 183 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (14) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 165 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (PYZ) Tj T* ET Q Q q 1 0 0 1 397.8898 165 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (15) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 147 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (PKG) Tj T* ET Q Q q 1 0 0 1 397.8898 147 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (15) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 129 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (EXE) Tj T* ET Q Q q 1 0 0 1 397.8898 129 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (16) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 111 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (DLL) Tj T* ET Q Q q 1 0 0 1 397.8898 111 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (16) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 93 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (COLLECT) Tj T* ET Q Q q 1 0 0 1 397.8898 93 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (17) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 75 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Tree) Tj T* ET Q Q q 1 0 0 1 397.8898 75 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (17) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 57 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (MERGE) Tj T* ET Q Q q 1 0 0 1 397.8898 57 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (17) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 39 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (When Things Go Wrong) Tj T* ET Q Q q 1 0 0 1 397.8898 39 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 60.88 0 Td (18) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 21 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Recipes and Instructions for special Modules) Tj T* ET Q Q q 1 0 0 1 397.8898 21 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (18) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 3 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Finding out What Went Wrong) Tj T* ET Q Q q 1 0 0 1 397.8898 3 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (18) Tj T* -60.88 0 Td ET Q Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 196.7649 0 Td (PyInstaller Manual -) Tj T* -196.7649 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (2) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R334': class PDFStream 334 0 obj % page stream << /Length 9540 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 105.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 633 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Buildtime Warnings) Tj T* ET Q Q q 1 0 0 1 397.8898 633 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (18) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 615 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Getting Debug Messages) Tj T* ET Q Q q 1 0 0 1 397.8898 615 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (19) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 597 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Getting Python's Verbose Imports) Tj T* ET Q Q q 1 0 0 1 397.8898 597 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (19) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 579 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Helping PyInstaller Find Modules) Tj T* ET Q Q q 1 0 0 1 397.8898 579 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (19) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 561 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Extending the Path) Tj T* ET Q Q q 1 0 0 1 397.8898 561 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (19) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 543 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Listing Hidden Imports) Tj T* ET Q Q q 1 0 0 1 397.8898 543 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (20) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 525 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Extending a Package's ) Tj /F4 10 Tf (__path__) Tj T* ET Q Q q 1 0 0 1 397.8898 525 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (21) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 507 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Changing Runtime Behavior) Tj T* ET Q Q q 1 0 0 1 397.8898 507 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (21) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 489 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Adapting to being "frozen") Tj T* ET Q Q q 1 0 0 1 397.8898 489 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (21) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 471 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Miscellaneous) Tj T* ET Q Q q 1 0 0 1 397.8898 471 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 60.88 0 Td (22) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 453 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Self-extracting executables) Tj T* ET Q Q q 1 0 0 1 397.8898 453 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (22) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 435 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (One Pass Execution) Tj T* ET Q Q q 1 0 0 1 397.8898 435 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (22) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 417 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Two Pass Execution) Tj T* ET Q Q q 1 0 0 1 397.8898 417 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (22) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 399 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (PyInstaller Archives) Tj T* ET Q Q q 1 0 0 1 397.8898 399 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 60.88 0 Td (23) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 381 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Archives Introduction) Tj T* ET Q Q q 1 0 0 1 397.8898 381 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (23) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 363 cm q BT 1 0 0 1 20 2 Tm 12 TL /F4 10 Tf 0 0 .501961 rg (ZlibArchive) Tj T* ET Q Q q 1 0 0 1 397.8898 363 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (23) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 345 cm q BT 1 0 0 1 20 2 Tm 12 TL /F4 10 Tf 0 0 .501961 rg (CArchive) Tj T* ET Q Q q 1 0 0 1 397.8898 345 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (23) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 327 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (License) Tj T* ET Q Q q 1 0 0 1 397.8898 327 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 60.88 0 Td (24) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 309 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Appendix) Tj T* ET Q Q q 1 0 0 1 397.8898 309 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 60.88 0 Td (24) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 291 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Building the bootloaders) Tj T* ET Q Q q 1 0 0 1 397.8898 291 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (24) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 273 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Development tools) Tj T* ET Q Q q 1 0 0 1 397.8898 273 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (24) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 255 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Building) Tj T* ET Q Q q 1 0 0 1 397.8898 255 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (25) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 237 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Linux Standard Base \(LSB\) binary) Tj T* ET Q Q q 1 0 0 1 397.8898 237 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (25) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 219 cm q BT 1 0 0 1 20 2 Tm 12 TL /F4 10 Tf 0 0 .501961 rg (mf.py) Tj /F1 10 Tf (: A Modulefinder Replacement) Tj T* ET Q Q q 1 0 0 1 397.8898 219 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (26) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 201 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (ImportTracker) Tj T* ET Q Q q 1 0 0 1 397.8898 201 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (26) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 183 cm q BT 1 0 0 1 40 2 Tm 12 TL /F4 10 Tf 0 0 .501961 rg (analyze_one\(\)) Tj T* ET Q Q q 1 0 0 1 397.8898 183 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (26) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 165 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Module Classes) Tj T* ET Q Q q 1 0 0 1 397.8898 165 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (27) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 147 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (code scanning) Tj T* ET Q Q q 1 0 0 1 397.8898 147 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (27) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 129 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Hooks) Tj T* ET Q Q q 1 0 0 1 397.8898 129 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (27) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 111 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Advanced Hook Usage) Tj T* ET Q Q q 1 0 0 1 397.8898 111 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (28) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 93 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Warnings) Tj T* ET Q Q q 1 0 0 1 397.8898 93 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (28) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 75 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Cross Reference) Tj T* ET Q Q q 1 0 0 1 397.8898 75 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (28) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 57 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (mf Usage) Tj T* ET Q Q q 1 0 0 1 397.8898 57 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (28) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 39 cm q BT 1 0 0 1 20 2 Tm 12 TL /F4 10 Tf 0 0 .501961 rg (iu.py) Tj /F1 10 Tf (: An ) Tj /F5 10 Tf (imputil ) Tj /F1 10 Tf (Replacement) Tj T* ET Q Q q 1 0 0 1 397.8898 39 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (29) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 21 cm q BT 1 0 0 1 40 2 Tm 12 TL /F4 10 Tf 0 0 .501961 rg (ImportManager) Tj T* ET Q Q q 1 0 0 1 397.8898 21 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (29) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 3 cm q BT 1 0 0 1 40 2 Tm 12 TL /F4 10 Tf 0 0 .501961 rg (ImportDirector) Tj T* ET Q Q q 1 0 0 1 397.8898 3 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (30) Tj T* -60.88 0 Td ET Q Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 196.7649 0 Td (PyInstaller Manual -) Tj T* -196.7649 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (3) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R335': class PDFStream 335 0 obj % page stream << /Length 9029 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 609.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 129 cm q BT 1 0 0 1 40 2 Tm 12 TL /F4 10 Tf 0 0 .501961 rg (PathImportDirector) Tj T* ET Q Q q 1 0 0 1 397.8898 129 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (30) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 111 cm q BT 1 0 0 1 40 2 Tm 12 TL /F4 10 Tf 0 0 .501961 rg (Owner) Tj T* ET Q Q q 1 0 0 1 397.8898 111 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (30) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 93 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Packages) Tj T* ET Q Q q 1 0 0 1 397.8898 93 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (30) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 75 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Possibilities) Tj T* ET Q Q q 1 0 0 1 397.8898 75 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (31) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 57 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Compatibility) Tj T* ET Q Q q 1 0 0 1 397.8898 57 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (31) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 39 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Performance) Tj T* ET Q Q q 1 0 0 1 397.8898 39 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (31) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 21 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Limitations) Tj T* ET Q Q q 1 0 0 1 397.8898 21 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (31) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 3 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (iu Usage) Tj T* ET Q Q q 1 0 0 1 397.8898 3 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (31) Tj T* -60.88 0 Td ET Q Q q Q Q q 1 0 0 1 62.69291 576.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Requirements) Tj T* ET Q Q q 1 0 0 1 62.69291 558.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL (Windows) Tj T* ET Q Q q 1 0 0 1 62.69291 519.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 26 Tm T* ET q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 18 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Windows XP or newer.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (PyWin32 ) Tj 0 0 0 rg (Python extensions for Windows is only necessary for users of Python 2.6+.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 62.69291 503.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL (Linux) Tj T* ET Q Q q 1 0 0 1 62.69291 464.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 26 Tm T* ET q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 18 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (ldd - Console application to print the shared libraries required by each program or shared library.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (objdump - Console application to display information from object files.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 62.69291 448.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL (Mac OS X) Tj T* ET Q Q q 1 0 0 1 62.69291 427.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 8 Tm T* ET q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Mac OS X 10.4 \(Tiger\) or newer \(Leopard, Snow Leopard, Lion, Mountain Lion\).) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 62.69291 411.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL (Solaris) Tj T* ET Q Q q 1 0 0 1 62.69291 372.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 26 Tm T* ET q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 18 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (ldd) Tj T* ET Q Q q Q Q q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (objdump) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 62.69291 356.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL (AIX) Tj T* ET Q Q q 1 0 0 1 62.69291 275.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 68 Tm T* ET q 1 0 0 1 20 72 cm Q q 1 0 0 1 20 72 cm Q q 1 0 0 1 20 36 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 21 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .593318 Tw (AIX 6.1 or newer. Python executables created using PyInstaller on AIX 6.1 should work on AIX) Tj T* 0 Tw 4.359147 Tw (5.2/5.3. PyInstaller will not work with statically linked Python libraries which has been) Tj T* 0 Tw (encountered in Python 2.2 installations on AIX 5.x.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 18 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (ldd) Tj T* ET Q Q q Q Q q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (objdump) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 62.69291 242.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Installing ) Tj /F3 17.5 Tf (PyInstaller) Tj T* ET Q Q q 1 0 0 1 62.69291 230.0236 cm Q q 1 0 0 1 62.69291 230.0236 cm Q q 1 0 0 1 62.69291 134.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 81 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 69 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.21686 Tw (Unpack the archive on you path of choice. For the purpose of this documentation we will assume) Tj T* 0 Tw (/your/path/to/pyinstaller/.) Tj T* ET Q Q q 1 0 0 1 23 27 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.743318 Tw (You will be using a couple of scripts in the /your/path/to/pyinstaller/ directory, and these will find) Tj T* 0 Tw .333984 Tw (everything they need from their own location. For convenience, keep the paths to these scripts short) Tj T* 0 Tw (\(don't install in a deeply nested subdirectory\).) Tj T* ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm .541654 Tw 12 TL /F2 10 Tf 0 0 0 rg (Please note: ) Tj /F1 10 Tf (Installer is ) Tj /F5 10 Tf (not ) Tj /F1 10 Tf (a Python package, so it doesn't need to go in site-packages, or have a) Tj T* 0 Tw (.pth file.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 128.0236 cm Q q 1 0 0 1 62.69291 104.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.949147 Tw (For Windows \(32/64bit\), Linux \(32/64bit\) and Mac OS X \(32/64bit\) precompiled boot-loaders are) Tj T* 0 Tw (available. So the installation is complete now.) Tj T* ET Q Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 164.2549 0 Td (PyInstaller Manual - Requirements) Tj T* -164.2549 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (4) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R336': class PDFStream 336 0 obj % page stream << /Length 7631 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 723.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 6 17 Tm T* ET q 1 0 0 1 23 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For other platforms \(Solaris, AIX, etc.\), users should first try to build the boot-loader:) Tj T* ET Q Q q 1 0 0 1 23 9 cm Q q 1 0 0 1 23 -3 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (cd source python ./waf configure build install) Tj T* ET Q Q q Q Q q 1 0 0 1 23 -3 cm Q q Q Q q 1 0 0 1 62.69291 723.0236 cm Q q 1 0 0 1 62.69291 690.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Getting Started) Tj T* ET Q Q q 1 0 0 1 62.69291 660.0236 cm q BT 1 0 0 1 0 14 Tm 9.191647 Tw 12 TL /F1 10 Tf 0 0 0 rg (For the purpose of this documentation we will assume ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (as installed into) Tj T* 0 Tw (/your/path/to/pyinstaller/.) Tj T* ET Q Q q 1 0 0 1 62.69291 630.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Build your project) Tj T* ET Q Q q 1 0 0 1 62.69291 612.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (For building a Windows COM server, please see section ) Tj 0 0 .501961 rg (Windows COM Server Support ) Tj 0 0 0 rg (below.) Tj T* ET Q Q q 1 0 0 1 62.69291 594.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (In the /your/path/to/pyinstaller/ directory, run:) Tj T* ET Q Q q 1 0 0 1 62.69291 560.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (python pyinstaller.py [opts] yourprogram.py) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 492.8236 cm q BT 1 0 0 1 0 50 Tm .814524 Tw 12 TL /F1 10 Tf 0 0 0 rg (This will create a sub-directory ) Tj /F4 10 Tf (your-program ) Tj /F1 10 Tf (in the /your/path/to/pyinstaller/ directory. The generated) Tj T* 0 Tw 3.569982 Tw (files will be placed within the sub-directory ) Tj /F4 10 Tf (your-program/dist) Tj /F1 10 Tf (; that's where the files you are) Tj T* 0 Tw .635318 Tw (interested in will be placed. A ) Tj /F5 10 Tf (spec ) Tj /F1 10 Tf (file called ) Tj /F4 10 Tf (your-program.spec ) Tj /F1 10 Tf (will be created in the sub-directory) Tj T* 0 Tw 2.45664 Tw /F4 10 Tf (your-program) Tj /F1 10 Tf (, too. Additionally a subtracts ) Tj /F4 10 Tf (your-program/build ) Tj /F1 10 Tf (is created where intermediate) Tj T* 0 Tw (build files are kept.) Tj T* ET Q Q q 1 0 0 1 62.69291 450.8236 cm q BT 1 0 0 1 0 26 Tm .304983 Tw 12 TL /F1 10 Tf 0 0 0 rg (If your current working directory is not /your/path/to/pyinstaller/, the directories ) Tj /F4 10 Tf (dist ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (build ) Tj /F1 10 Tf (and the) Tj T* 0 Tw .561412 Tw /F5 10 Tf (spec ) Tj /F1 10 Tf (file will be created in the current working directory. Say: the intermediate directory ) Tj /F4 10 Tf (your-program) Tj T* 0 Tw /F1 10 Tf (will be skipped.) Tj T* ET Q Q q 1 0 0 1 62.69291 432.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (If you have already created a ) Tj /F5 10 Tf (spec ) Tj /F1 10 Tf (file for your project then in the /your/path/to/pyinstaller/ directory run:) Tj T* ET Q Q q 1 0 0 1 62.69291 399.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (python pyinstaller.py [opts] your-program.spec) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 379.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (If your current working directory is not /your/path/to/pyinstaller/, this works analogously.) Tj T* ET Q Q q 1 0 0 1 62.69291 349.6236 cm q BT 1 0 0 1 0 14 Tm .565703 Tw 12 TL /F1 10 Tf 0 0 0 rg (If everything is working and you are happy with the default settings, this will be all you have to do. If not,) Tj T* 0 Tw (see ) Tj 0 0 .501961 rg (Allowed OPTIONS) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (When things go wrong ) Tj 0 0 0 rg (and be sure to read the introduction to ) Tj 0 0 .501961 rg (Spec Files) Tj 0 0 0 rg (.) Tj T* ET Q Q q 1 0 0 1 62.69291 319.6236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Allowed Options) Tj T* ET Q Q q 1 0 0 1 62.69291 277.6236 cm q BT 1 0 0 1 0 26 Tm 1.64248 Tw 12 TL /F1 10 Tf 0 0 0 rg (By default, ) Tj /F4 10 Tf (pyinstaller.py ) Tj /F1 10 Tf (creates a distribution directory containing the main executable and the) Tj T* 0 Tw 1.130651 Tw (dynamic libraries. The option ) Tj /F4 10 Tf (--onefile ) Tj /F1 10 Tf (\(specifies that you want PyInstaller to build a single file with) Tj T* 0 Tw (everything inside.) Tj T* ET Q Q q 1 0 0 1 62.69291 259.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The syntax to use ) Tj /F4 10 Tf (pyinstaller.py ) Tj /F1 10 Tf (is the following:) Tj T* ET Q Q q 1 0 0 1 62.69291 226.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (python pyinstaller.py [opts] ) Tj (<) Tj (scriptname) Tj (>) Tj ( [ ) Tj (<) Tj (scriptname) Tj (>) Tj ( ...] | ) Tj (<) Tj (specfile) Tj (>) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 206.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Allowed OPTIONS are:) Tj T* ET Q Q q 1 0 0 1 62.69291 191.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-h, --help) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (show this help message and exit) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 176.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-v, --version) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (show program version) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 160.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--upx-dir=UPX_DIR) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Directory containing UPX.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 133.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-a, --ascii) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 5.680976 Tw (do NOT include unicode encodings \(default:) Tj T* 0 Tw (included if available\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 106.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--buildpath=BUILDPATH) Tj T* ET Q Q Q Q Q q 1 0 0 1 204.9498 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 178.34 Tw (Buildpath \(default:) Tj T* 0 Tw (SPECPATH/build/pyi.TARGET_PLATFORM/SPECNAME\)) Tj T* ET Q Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 161.7449 0 Td (PyInstaller Manual - Getting Started) Tj T* -161.7449 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (5) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R337': class PDFStream 337 0 obj % page stream << /Length 8953 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 714.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-y, --noconfirm) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 25.03496 Tw (Remove output directory \(default:) Tj T* 0 Tw 54.01488 Tw (SPECPATH/dist/SPECNAME\) without) Tj T* 0 Tw (confirmation) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 687.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--log-level=LOGLEVEL) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.120697 Tw (Log level \(default: INFO, choose one of DEBUG,) Tj T* 0 Tw (INFO, WARN, ERROR, CRITICAL\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 669.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (What to generate:) Tj T* ET Q Q q 1 0 0 1 62.69291 653.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-F, --onefile) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (create a single file deployment) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 638.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-D, --onedir) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (create a single directory deployment \(default\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 587.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 38.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-o DIR, --out=DIR) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 38 Tm 1.81436 Tw 12 TL /F1 10 Tf 0 0 0 rg (create the spec file in ) Tj /F5 10 Tf (directory) Tj /F1 10 Tf (. If not specified,) Tj T* 0 Tw 6.64248 Tw (and the current directory is Installer's root) Tj T* 0 Tw 1.77248 Tw (directory, an output subdirectory will be created.) Tj T* 0 Tw (Otherwise the current directory is used.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 548.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-n NAME, --name=NAME) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 26 Tm .28686 Tw 12 TL /F1 10 Tf 0 0 0 rg (optional ) Tj /F5 10 Tf (name ) Tj /F1 10 Tf (to assign to the project \(from which) Tj T* 0 Tw 1.81311 Tw (the spec file name is generated\). If omitted, the) Tj T* 0 Tw (basename of the \(first\) script is used.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 530.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (What to bundle, where to search:) Tj T* ET Q Q q 1 0 0 1 62.69291 467.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 50.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-p DIR, --paths=DIR) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q 0 0 0 rg BT 1 0 0 1 0 50 Tm /F1 10 Tf 12 TL 11.68415 Tw (set base path for import \(like using) Tj T* 0 Tw 1.41872 Tw (PYTHONPATH\). Multiple directories are allowed,) Tj T* 0 Tw .812126 Tw (separating them with the path separator \(';' under) Tj T* 0 Tw 3.196412 Tw (Windows, ':' under Linux\), or using this option) Tj T* 0 Tw (multiple times.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 440.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--hidden-import=MODULENAME) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.19061 Tw (import hidden in the script\(s\). This option can be) Tj T* 0 Tw (used multiple times.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 401.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--additional-hooks-dir=HOOKSPATH) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 26 Tm 1.74561 Tw 12 TL /F1 10 Tf 0 0 0 rg (Additional path to search for hooks. This will go) Tj T* 0 Tw 5.009147 Tw (into the extend the ) Tj /F5 10 Tf (hookspath) Tj /F1 10 Tf (, see ) Tj 0 0 .501961 rg (Analysis) Tj T* 0 Tw 0 0 0 rg (below. This option may be given several times.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 383.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (How to generate:) Tj T* ET Q Q q 1 0 0 1 62.69291 368.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-d, --debug) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (use the debug \(verbose\) build of the executable) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 329.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-s, --strip) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .84311 Tw (the executable and all shared libraries will be run) Tj T* 0 Tw 2.992126 Tw (through strip. Note that cygwin's strip tends to) Tj T* 0 Tw (render normal Win32 dlls unusable.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 302.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--noupx) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .00936 Tw (do not use UPX even if available \(works differently) Tj T* 0 Tw (between Windows and *nix\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 284.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Windows and Mac OS X specific options:) Tj T* ET Q Q q 1 0 0 1 62.69291 269.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-c, --console, --nowindowed) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (use a console subsystem executable \(default\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 182.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 74.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-w, --windowed, --noconsole) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 74 Tm .75248 Tw 12 TL /F1 10 Tf 0 0 0 rg (use a windowed subsystem executable, which on) Tj T* 0 Tw 2.706412 Tw (Windows does not open the console when the) Tj T* 0 Tw 3.34561 Tw (program is launched. On Mac OS X it allows) Tj T* 0 Tw 3.43748 Tw (running gui applications and also creates also) Tj T* 0 Tw 2.979147 Tw (.app bundle. ) Tj /F2 10 Tf (This option is mandatory when) Tj T* 0 Tw 4.302126 Tw (freezing an gui application on Mac OS X.) Tj T* 0 Tw (Otherwise the application will not start.) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 166.2236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL (-i FILE.ICO, -i FILE.EXE,ID, -i FILE.ICNS, --icon=FILE.ICO, --icon=FILE.EXE,ID, --icon=FILE.ICNS) Tj T* ET Q Q q 1 0 0 1 62.69291 127.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 26 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .44832 Tw (If FILE is an .ico file, add the icon to the final executable. Otherwise, the syntax 'file.exe,id' to extract) Tj T* 0 Tw .036655 Tw (the icon with the specified id from file.exe and add it to the final executable. If FILE is an .icns file, add) Tj T* 0 Tw (the icon to the final .app bundle on Mac OS X \(for Mac not yet implemented\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 109.2236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Windows specific options:) Tj T* ET Q Q q 1 0 0 1 62.69291 94.02362 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--version-file=FILE) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (add a version resource from FILE to the exe) Tj T* ET Q Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 161.7449 0 Td (PyInstaller Manual - Getting Started) Tj T* -161.7449 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (6) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R338': class PDFStream 338 0 obj % page stream << /Length 7406 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 17.56236 cm q q .773577 0 0 .773577 0 0 cm q 1 0 0 1 .1 .12927 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-m FILE, -m XML, --manifest=FILE, --manifest=XML) Tj T* ET Q Q Q Q Q q 1 0 0 1 306 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 2.321627 Tw (add manifest FILE or XML to the) Tj T* 0 Tw (exe) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 710.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL (-r FILE[,TYPE[,NAME[,LANGUAGE]]], --resource=FILE[,TYPE[,NAME[,LANGUAGE]]]) Tj T* ET Q Q q 1 0 0 1 62.69291 635.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 62 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 62 Tm /F1 10 Tf 12 TL .975984 Tw (add/update resource of the given type, name and language from FILE to the final executable. FILE) Tj T* 0 Tw 2.389431 Tw (can be a data file or an exe/dll. For data files, atleast TYPE and NAME need to be specified,) Tj T* 0 Tw .044431 Tw (LANGUAGE defaults to 0 or may be specified as wildcard * to update all resources of the given TYPE) Tj T* 0 Tw .744985 Tw (and NAME. For exe/dll files, all resources from FILE will be added/updated to the final executable if) Tj T* 0 Tw .364597 Tw (TYPE, NAME and LANGUAGE are omitted or specified as wildcard *.Multiple resources are allowed,) Tj T* 0 Tw (using this option multiple times.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 617.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (For building with optimization on \(like ) Tj /F4 10 Tf (Python -O) Tj /F1 10 Tf (\), see section ) Tj 0 0 .501961 rg (Building Optimized) Tj 0 0 0 rg (.) Tj T* ET Q Q q 1 0 0 1 62.69291 587.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (A spec file for your project) Tj T* ET Q Q q 1 0 0 1 62.69291 545.0236 cm q BT 1 0 0 1 0 26 Tm 2.792927 Tw 12 TL /F1 10 Tf 0 0 0 rg (The spec file is the description of what you want ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (to do with your program. By deafult,) Tj T* 0 Tw .171412 Tw /F4 10 Tf (pyinstaller.py ) Tj /F1 10 Tf (generates a spec file automatically. For simple projects, the generated spec file will be) Tj T* 0 Tw (probably sufficient.) Tj T* ET Q Q q 1 0 0 1 62.69291 515.0236 cm q BT 1 0 0 1 0 14 Tm 1.125868 Tw 12 TL /F1 10 Tf 0 0 0 rg (For more complex projects, it should be regarded as a template. The spec file is actually Python code,) Tj T* 0 Tw (and modifying it should be ease. See ) Tj 0 0 .501961 rg (Spec Files ) Tj 0 0 0 rg (for details.) Tj T* ET Q Q q 1 0 0 1 62.69291 485.0236 cm q BT 1 0 0 1 0 14 Tm .511567 Tw 12 TL /F1 10 Tf 0 0 0 rg (In the root directory of ) Tj /F5 10 Tf (PyInstaller) Tj /F1 10 Tf (, there is a simple wizard to create simple spec files that cover all basic) Tj T* 0 Tw (usages:) Tj T* ET Q Q q 1 0 0 1 62.69291 451.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (python utils/Makespec.py [--onefile] yourprogram.py) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 431.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Elaborating on Makespec.py, this is the supported command line:) Tj T* ET Q Q q 1 0 0 1 62.69291 398.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (python utils/Makespec.py [opts] ) Tj (<) Tj (scriptname) Tj (>) Tj ( [) Tj (<) Tj (scriptname) Tj (>) Tj ( ...]) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 378.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Script ) Tj /F4 10 Tf (Makespec.py ) Tj /F1 10 Tf (shares some options with ) Tj /F4 10 Tf (pyinstaller.py) Tj /F1 10 Tf (. For allowed options see:) Tj T* ET Q Q q 1 0 0 1 62.69291 345.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (python utils/Makespec.py --help) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 315.4236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Windows COM Server support) Tj T* ET Q Q q 1 0 0 1 62.69291 297.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For Windows COM support execute:) Tj T* ET Q Q q 1 0 0 1 62.69291 264.2236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (python MakeComServer.py [OPTION] script...) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 244.2236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (This will generate a new script ) Tj /F4 10 Tf (drivescript.py ) Tj /F1 10 Tf (and a spec file for the script.) Tj T* ET Q Q q 1 0 0 1 62.69291 226.2236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (These options are allowed:) Tj T* ET Q Q q 1 0 0 1 62.69291 211.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--debug) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Use the verbose version of the executable.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 195.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--verbose) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Register the COM server\(s\) with the quiet flag off.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 168.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--ascii) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.27784 Tw (do not include encodings \(this is passed through) Tj T* 0 Tw (to Makespec\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 153.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (--out ) Tj (<) Tj (dir) Tj (>) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Generate the driver script and spec file in dir.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 135.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Now ) Tj 0 0 .501961 rg (Build your project ) Tj 0 0 0 rg (on the generated spec file.) Tj T* ET Q Q q 1 0 0 1 62.69291 105.6236 cm q BT 1 0 0 1 0 14 Tm .629431 Tw 12 TL /F1 10 Tf 0 0 0 rg (If you have the win32dbg package installed, you can use it with the generated COM server. In the driver) Tj T* 0 Tw (script, set ) Tj /F4 10 Tf (debug=1 ) Tj /F1 10 Tf (in the registration line.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 137.5749 0 Td (PyInstaller Manual - A spec file for your project) Tj T* -137.5749 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (7) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R339': class PDFStream 339 0 obj % page stream << /Length 5776 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 681.0236 cm q BT 1 0 0 1 0 62 Tm .907984 Tw 12 TL /F2 10 Tf 0 0 0 rg (Warnings) Tj /F1 10 Tf (: the inprocess COM server support will not work when the client process already has Python) Tj T* 0 Tw 3.348651 Tw (loaded. It would be rather tricky to non-obtrusively hook into an already running Python, but the) Tj T* 0 Tw .029431 Tw (show-stopper is that the Python/C API won't let us find out which interpreter instance I should hook into. \(If) Tj T* 0 Tw 1.831984 Tw (this is important to you, you might experiment with using apartment threading, which seems the best) Tj T* 0 Tw .368488 Tw (possibility to get this to work\). To use a "frozen" COM server from a Python process, you'll have to load it) Tj T* 0 Tw (as an exe:) Tj T* ET Q Q q 1 0 0 1 62.69291 635.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (o = win32com.client.Dispatch\(progid,) Tj T* ( clsctx=pythoncom.CLSCTX_LOCAL_SERVER\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 603.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .84436 Tw (MakeCOMServer also assumes that your top level code \(registration etc.\) is "normal". If it's not, you will) Tj T* 0 Tw (have to edit the generated script.) Tj T* ET Q Q q 1 0 0 1 62.69291 573.8236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Building Optimized) Tj T* ET Q Q q 1 0 0 1 62.69291 543.8236 cm q BT 1 0 0 1 0 14 Tm .036136 Tw 12 TL /F1 10 Tf 0 0 0 rg (There are two facets to running optimized: gathering ) Tj /F4 10 Tf (.pyo) Tj /F1 10 Tf ('s, and setting the ) Tj /F4 10 Tf (Py_OptimizeFlag) Tj /F1 10 Tf (. Installer) Tj T* 0 Tw (will gather ) Tj /F4 10 Tf (.pyo) Tj /F1 10 Tf ('s if it is run optimized:) Tj T* ET Q Q q 1 0 0 1 62.69291 510.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (python -O pyinstaller.py ...) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 478.6236 cm q BT 1 0 0 1 0 14 Tm .394985 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (Py_OptimizeFlag ) Tj /F1 10 Tf (will be set if you use a ) Tj /F4 10 Tf (\('O','','OPTION'\) ) Tj /F1 10 Tf (in one of the ) Tj /F4 10 Tf (TOCs ) Tj /F1 10 Tf (building the) Tj T* 0 Tw /F4 10 Tf (EXE) Tj /F1 10 Tf (:) Tj T* ET Q Q q 1 0 0 1 62.69291 421.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (exe = EXE\(pyz,) Tj T* ( a.scripts + [\('O','','OPTION'\)],) Tj T* ( ...) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 401.4236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (See ) Tj 0 0 .501961 rg (Spec Files ) Tj 0 0 0 rg (for details.) Tj T* ET Q Q q 1 0 0 1 62.69291 371.4236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (A Note on using UPX) Tj T* ET Q Q q 1 0 0 1 62.69291 329.4236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.64811 Tw (On both Windows and Linux, UPX can give truly startling compression - the days of fitting something) Tj T* 0 Tw 1.92436 Tw (useful on a diskette are not gone forever! Installer has been tested with many UPX versions without) Tj T* 0 Tw (problems. Just get it and install it on your PATH.) Tj T* ET Q Q q 1 0 0 1 62.69291 251.4236 cm q BT 1 0 0 1 0 62 Tm .931412 Tw 12 TL /F1 10 Tf 0 0 0 rg (For Windows, there is a problem of compatibility between UPX and executables generated by Microsoft) Tj T* 0 Tw 3.233555 Tw (Visual Studio .NET 2003 \(or the equivalent free toolkit available for download\). This is especially) Tj T* 0 Tw 1.554651 Tw (worrisome for users of Python 2.4+, where most extensions \(and Python itself\) are compiled with that) Tj T* 0 Tw .094988 Tw (compiler. This issue has been fixed in later beta versions of UPX, so you will need at least UPX 1.92 beta.) Tj T* 0 Tw .626654 Tw /F4 10 Tf (pyinstaller.py ) Tj /F1 10 Tf (will check this for you and complain if you have an older version of UPX and you are) Tj T* 0 Tw (using Python 2.4.) Tj T* ET Q Q q 1 0 0 1 62.69291 148.0236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 8.6 cm q .5 w .662745 .662745 .662745 RG .960784 .960784 .862745 rg n 0 0 400.8898 86 re B* Q q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 62.6 cm q 0 0 0 rg BT 1 0 0 1 0 2.5 Tm /F3 12.5 Tf 15 TL (UPX and Unix) Tj T* ET Q Q Q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 8.6 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL .144983 Tw (Under UNIX, old versions of UPX were not able to expand and execute the executable) Tj T* 0 Tw 1.140697 Tw (in memory, and they were extracting it into a temporary file in the filesystem, before) Tj T* 0 Tw .781412 Tw (spawning it. This is no longer valid under Linux, but the information in this paragraph) Tj T* 0 Tw (still needs to be updated.) Tj T* ET Q Q Q Q Q Q Q Q q 1 0 0 1 62.69291 106.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.496654 Tw (For Linux, a bit more discussion is in order. First, UPX is only useful on executables, not shared libs.) Tj T* 0 Tw .797633 Tw (Installer accounts for that, but to get the full benefit, you might rebuild Python with more things statically) Tj T* 0 Tw (linked.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 153.6949 0 Td (PyInstaller Manual - Building Optimized) Tj T* -153.6949 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (8) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R340': class PDFStream 340 0 obj % page stream << /Length 5919 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 681.0236 cm q BT 1 0 0 1 0 62 Tm 4.064651 Tw 12 TL /F1 10 Tf 0 0 0 rg (More importantly, when ) Tj /F4 10 Tf (run ) Tj /F1 10 Tf (finds that its ) Tj /F4 10 Tf (sys.argv[0] ) Tj /F1 10 Tf (does not contain a path, it will use) Tj T* 0 Tw .786457 Tw /F4 10 Tf (/proc/pid/exe ) Tj /F1 10 Tf (to find itself \(if it can\). This happens, for example, when executed by Apache. If it has) Tj T* 0 Tw 1.812339 Tw (been upx-ed, this symbolic link points to the tempfile created by the upx stub and ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (will fail) Tj T* 0 Tw 2.363876 Tw (\(please see the UPX docs for more information\). So for now, at least, you can't use upx for CGI's) Tj T* 0 Tw 1.423318 Tw (executed by Apache. Otherwise, you can ignore the warnings in the UPX docs, since what PyInstaller) Tj T* 0 Tw (opens is the executable Installer created, not the temporary upx-created executable.) Tj T* ET Q Q q 1 0 0 1 62.69291 651.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Accessing Data Files) Tj T* ET Q Q q 1 0 0 1 62.69291 609.0236 cm q BT 1 0 0 1 0 26 Tm 1.681235 Tw 12 TL /F1 10 Tf 0 0 0 rg (If your application needs to access data files, e.g configuration files or icons images, you need some) Tj T* 0 Tw .209986 Tw (minor changes to you application and you need to collect the file into distribution directory tree \(in ) Tj /F5 10 Tf (--onedir) Tj T* 0 Tw /F1 10 Tf (mode\) resp. into the executable \(in ) Tj /F5 10 Tf (--onefile ) Tj /F1 10 Tf (mode\).) Tj T* ET Q Q q 1 0 0 1 62.69291 582.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Adopt your application) Tj T* ET Q Q q 1 0 0 1 62.69291 564.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Instead of:) Tj T* ET Q Q q 1 0 0 1 62.69291 530.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (basedir = os.path.dirname\(__file__\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 510.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (use:) Tj T* ET Q Q q 1 0 0 1 62.69291 441.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 60 re B* Q q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F4 10 Tf 12 TL (if getattr\(sys, 'frozen', None\):) Tj T* ( basedir = sys._MEIPASS) Tj T* (else:) Tj T* ( basedir = os.path.dirname\(__file__\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 409.6236 cm q BT 1 0 0 1 0 14 Tm .19284 Tw 12 TL /F4 10 Tf 0 0 0 rg (sys._MEIPASS ) Tj /F1 10 Tf (points in ) Tj /F5 10 Tf (--onedir ) Tj /F1 10 Tf (mode to the directory containing the created executable and in ) Tj /F5 10 Tf (--onefile) Tj T* 0 Tw /F1 10 Tf (mode to the temporary directory where binaries get extracted.) Tj T* ET Q Q q 1 0 0 1 62.69291 382.6236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Collect your data files) Tj T* ET Q Q q 1 0 0 1 62.69291 352.6236 cm q BT 1 0 0 1 0 14 Tm .430514 Tw 12 TL /F1 10 Tf 0 0 0 rg (Collecting the data-files is easy: pass a list of your data files \(in ) Tj /F4 10 Tf (TOC ) Tj /F1 10 Tf (format\) to the ) Tj /F4 10 Tf (COLLECT) Tj /F1 10 Tf (. The ) Tj /F4 10 Tf (name) Tj T* 0 Tw /F1 10 Tf (in the ) Tj /F4 10 Tf (\(name, path, 'DATA'\) ) Tj /F1 10 Tf (tuple can be a relative path name.) Tj T* ET Q Q q 1 0 0 1 62.69291 334.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Then, at runtime, you can use code like this to find the file:) Tj T* ET Q Q q 1 0 0 1 62.69291 301.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (os.path.join\(basedir, relativename\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 269.4236 cm q BT 1 0 0 1 0 14 Tm .815868 Tw 12 TL /F1 10 Tf 0 0 0 rg (In a ) Tj /F4 10 Tf (--onedir ) Tj /F1 10 Tf (distribution, the files will listed in the ) Tj /F4 10 Tf (COLLECT ) Tj /F1 10 Tf (will show up in the distribution directory) Tj T* 0 Tw (tree, so you can simply pack them into your isntaller or distribution archive.) Tj T* ET Q Q q 1 0 0 1 62.69291 239.4236 cm q BT 1 0 0 1 0 14 Tm .793318 Tw 12 TL /F1 10 Tf 0 0 0 rg (In a ) Tj /F4 10 Tf (--onefile ) Tj /F1 10 Tf (distribution, data files are bundled within the executable and then at runtime extracted) Tj T* 0 Tw (into the work directory. This is done by the C code which is also able to reconstruct directory trees.) Tj T* ET Q Q q 1 0 0 1 62.69291 209.4236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (How one-file mode works) Tj T* ET Q Q q 1 0 0 1 62.69291 100.0236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 8.6 cm q .5 w .662745 .662745 .662745 RG .960784 .960784 .862745 rg n 0 0 400.8898 86 re B* Q q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 62.6 cm q 0 0 0 rg BT 1 0 0 1 0 2.5 Tm /F3 12.5 Tf 15 TL (Bootloader) Tj T* ET Q Q Q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 8.6 cm q BT 1 0 0 1 0 38 Tm .545697 Tw 12 TL /F1 10 Tf 0 0 0 rg (The bootloader \(also known as ) Tj /F5 10 Tf (stub ) Tj /F1 10 Tf (in literature\) is the small program which starts up) Tj T* 0 Tw 1.982976 Tw (your packaged program. Usually, the archive containing the bytecoded modules of) Tj T* 0 Tw 2.815433 Tw (your program is simply appended to it. See ) Tj 0 0 .501961 rg (Self-extracting executables ) Tj 0 0 0 rg (for more) Tj T* 0 Tw (details on the process.) Tj T* ET Q Q Q Q Q Q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 148.6949 0 Td (PyInstaller Manual - Accessing Data Files) Tj T* -148.6949 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (9) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R341': class PDFStream 341 0 obj % page stream << /Length 9544 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 669.0236 cm q BT 1 0 0 1 0 74 Tm 1.779986 Tw 12 TL /F1 10 Tf 0 0 0 rg (A ) Tj /F4 10 Tf (--onefile ) Tj /F1 10 Tf (works by packing all the shared libs / dlls into the archive attached to the bootloader) Tj T* 0 Tw .196654 Tw (executable \(or next to the executable in a non-elf configuration\). When first started, it finds that it needs to) Tj T* 0 Tw .283876 Tw (extract these files before it can run "for real". That's because locating and loading a shared lib or linked-in) Tj T* 0 Tw 2.17186 Tw (dll is a system level action, not user-level. With PyInstaller 2.0 it always uses a temporary directory) Tj T* 0 Tw 1.01061 Tw (\() Tj /F4 10 Tf (_MEIXXXXX) Tj /F1 10 Tf (, where ) Tj /F4 10 Tf (XXXXX ) Tj /F1 10 Tf (is a random number to avoid conflicts\) in the user's temp directory. It then) Tj T* 0 Tw 1.503672 Tw (executes itself again, setting things up so the system will be able to load the shared libs / dlls. When) Tj T* 0 Tw (execution is complete, it recursively removes the entire directory it created.) Tj T* ET Q Q q 1 0 0 1 62.69291 627.0236 cm q BT 1 0 0 1 0 26 Tm .693555 Tw 12 TL /F1 10 Tf 0 0 0 rg (The temporary directory is exported to the program's environment as ) Tj /F4 10 Tf (sys._MEIPASS) Tj /F1 10 Tf (. This can be used) Tj T* 0 Tw .692765 Tw (in case you manually modified the spec file to tell PyInstaller to add additional files \(eg: data files\) within) Tj T* 0 Tw (the executable \(see also ) Tj 0 0 .501961 rg (Accessing Data Files) Tj 0 0 0 rg (\).) Tj T* ET Q Q q 1 0 0 1 62.69291 609.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This has a number of implications:) Tj T* ET Q Q q 1 0 0 1 62.69291 603.0236 cm Q q 1 0 0 1 62.69291 603.0236 cm Q q 1 0 0 1 62.69291 591.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You can run multiple copies - they won't collide.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 585.0236 cm Q q 1 0 0 1 62.69291 573.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Running multiple copies will be rather expensive to the system \(nothing is shared\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 567.0236 cm Q q 1 0 0 1 62.69291 555.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (On Windows, using Task Manager to kill the parent process will leave the directory behind.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 549.0236 cm Q q 1 0 0 1 62.69291 537.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (On *nix, a kill -9 \(or crash\) will leave the directory behind.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 531.0236 cm Q q 1 0 0 1 62.69291 519.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Otherwise, on both platforms, the directory will be recursively deleted.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 513.0236 cm Q q 1 0 0 1 62.69291 501.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (So any files you might create in ) Tj /F4 10 Tf (sys._MEIPASS ) Tj /F1 10 Tf (will be deleted.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 495.0236 cm Q q 1 0 0 1 62.69291 483.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The executable can be in a protected or read-only directory.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 483.0236 cm Q q 1 0 0 1 62.69291 417.0236 cm q BT 1 0 0 1 0 50 Tm 1.026457 Tw 12 TL /F2 10 Tf 0 0 0 rg (Notes for *nix users) Tj /F1 10 Tf (: Take notice that if the executable does a setuid root, a determined hacker could) Tj T* 0 Tw .362485 Tw (possibly \(given enough tries\) introduce a malicious lookalike of one of the shared libraries during the hole) Tj T* 0 Tw 2.61936 Tw (between when the library is extracted into the temporary directory and when it gets loaded by the) Tj T* 0 Tw .118735 Tw (execvp'd process. So maybe you shouldn't do setuid root programs using ) Tj /F4 10 Tf (--onefile) Tj /F1 10 Tf (. ) Tj /F2 10 Tf (In fact, we do not) Tj T* 0 Tw (recomend the use of --onefile on setuid programs.) Tj T* ET Q Q q 1 0 0 1 62.69291 387.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (.egg files and setuptools) Tj T* ET Q Q q 1 0 0 1 62.69291 333.0236 cm q BT 1 0 0 1 0 38 Tm 2.081412 Tw 12 TL /F1 10 Tf 0 0 .501961 rg (setuptools ) Tj 0 0 0 rg (is a distutils extensions which provide many benefits, including the ability to distribute the) Tj T* 0 Tw .049269 Tw (extension as ) Tj /F4 10 Tf (eggs) Tj /F1 10 Tf (. Together with the nifty ) Tj 0 0 .501961 rg (easy_install ) Tj 0 0 0 rg (\(a tool which automatically locates, downloads and) Tj T* 0 Tw 1.647126 Tw (installs Python extensions\), ) Tj /F4 10 Tf (eggs ) Tj /F1 10 Tf (are becoming more and more widespread as a way for distributing) Tj T* 0 Tw (Python extensions.) Tj T* ET Q Q q 1 0 0 1 62.69291 279.0236 cm q BT 1 0 0 1 0 38 Tm 1.392485 Tw 12 TL /F4 10 Tf 0 0 0 rg (eggs ) Tj /F1 10 Tf (can be either files or directories. An ) Tj /F4 10 Tf (egg ) Tj /F1 10 Tf (directory is basically a standard Python package, with) Tj T* 0 Tw .043984 Tw (some additional metadata that can be used for advanced ) Tj 0 0 .501961 rg (setuptools ) Tj 0 0 0 rg (features like entry-points. An ) Tj /F4 10 Tf (egg ) Tj /F1 10 Tf (file) Tj T* 0 Tw .192988 Tw (is simply a ZIP file, and it works as a package as well because Python 2.3+ is able to transparently import) Tj T* 0 Tw (modules stored within ZIP files.) Tj T* ET Q Q q 1 0 0 1 62.69291 261.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F5 10 Tf 0 0 0 rg (PyInstaller ) Tj /F1 10 Tf (supports ) Tj /F4 10 Tf (eggs ) Tj /F1 10 Tf (at a good level. In fact:) Tj T* ET Q Q q 1 0 0 1 62.69291 255.0236 cm Q q 1 0 0 1 62.69291 255.0236 cm Q q 1 0 0 1 62.69291 219.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 21 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 26 Tm .351235 Tw 12 TL /F1 10 Tf 0 0 0 rg (It is able to follow dependencies within ) Tj /F4 10 Tf (eggs ) Tj /F1 10 Tf (\(both files and directories\). So if your program imports) Tj T* 0 Tw 1.919213 Tw (a package shipped in ) Tj /F4 10 Tf (egg ) Tj /F1 10 Tf (format, and this package requires additional libraries, ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (will) Tj T* 0 Tw (correctly include everything within the generated executable.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 213.0236 cm Q q 1 0 0 1 62.69291 165.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 33 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 38 Tm .232706 Tw 12 TL /F4 10 Tf 0 0 0 rg (egg-files ) Tj /F1 10 Tf (are fully supported. To let everything works \(entry-points, ) Tj /F4 10 Tf (pkg_resource ) Tj /F1 10 Tf (library, etc.\),) Tj T* 0 Tw 1.886905 Tw /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (either copy the ) Tj /F4 10 Tf (egg-files ) Tj /F1 10 Tf (into the distribution directory \(in one-dir mode\) or packs) Tj T* 0 Tw .596412 Tw (them as-is within the generated executable and unpack them at startup into the temporary directory) Tj T* 0 Tw (\(see ) Tj 0 0 .501961 rg (How one-file mode works) Tj 0 0 0 rg (\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 159.0236 cm Q q 1 0 0 1 62.69291 135.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm 1.416136 Tw 12 TL /F4 10 Tf 0 0 0 rg (egg-directories ) Tj /F1 10 Tf (are partially supported. In fact, ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (at build time treat them as regular) Tj T* 0 Tw (package. This means that all advanced features requiring ) Tj /F4 10 Tf (egg ) Tj /F1 10 Tf (metadatas will not work.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 135.0236 cm Q q 1 0 0 1 62.69291 117.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Improved support for ) Tj /F4 10 Tf (eggs ) Tj /F1 10 Tf (is planned for a future release of ) Tj /F5 10 Tf (PyInstaller) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 141.4549 0 Td (PyInstaller Manual - .egg files and setuptools) Tj T* -141.4549 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (10) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R342': class PDFStream 342 0 obj % page stream << /Length 7180 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 735.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Multipackage function) Tj T* ET Q Q q 1 0 0 1 62.69291 693.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .573318 Tw (Some applications are made of several different binaries, that might rely on the same third-party libraries) Tj T* 0 Tw .665868 Tw (and/or share lots of code. When packaging such applications, it would be a pity to treat each application) Tj T* 0 Tw (binary separately and repackage all its dependencies, potentially duplicating lots of code and libraries.) Tj T* ET Q Q q 1 0 0 1 62.69291 639.0236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL .017318 Tw (With Pyinstaller, you can use the multipackage feature to create multiple binaries that might share libraries) Tj T* 0 Tw 1.903318 Tw (among themselves: each dependency is packaged only once in one of the binaries, while the others) Tj T* 0 Tw 2.046457 Tw (simply have an "external reference" to it, that tells them to go finding that dependency in the binary) Tj T* 0 Tw (contains it.) Tj T* ET Q Q q 1 0 0 1 62.69291 597.0236 cm q BT 1 0 0 1 0 26 Tm 1.23561 Tw 12 TL /F1 10 Tf 0 0 0 rg (The easiest way to access this function is to simply pass multiple script files to ) Tj /F4 10 Tf (pyinstaller.py ) Tj /F1 10 Tf (\(or) Tj T* 0 Tw 2.597318 Tw /F4 10 Tf (utils/Makespec.py`) Tj /F1 10 Tf (\). It will generate a spec file that contains a call to the ) Tj 0 0 .501961 rg (MERGE ) Tj 0 0 0 rg (function to) Tj T* 0 Tw (basically merge dependencies across the different scripts.) Tj T* ET Q Q q 1 0 0 1 62.69291 555.0236 cm q BT 1 0 0 1 0 26 Tm .01528 Tw 12 TL /F1 10 Tf 0 0 0 rg (The order of the scripts on the command line \(and within the ) Tj 0 0 .501961 rg (MERGE ) Tj 0 0 0 rg (function\) matters: given each library,) Tj T* 0 Tw 1.299982 Tw (PyInstaller will package common dependencies on the leftmost script that first needs that dependency.) Tj T* 0 Tw (You might want to tweak the order of the script files accordingly.) Tj T* ET Q Q q 1 0 0 1 62.69291 501.0236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL .36061 Tw (Notice that the external references between binaries are hard-coded with respect to the paths on the disk) Tj T* 0 Tw 1.246098 Tw (in which they are created in the output directory, and cannot be rearranged: thus, if you use a one-file) Tj T* 0 Tw .015868 Tw (deploy, you will need to place all binaries in the same directory when you install your application. Similarly,) Tj T* 0 Tw (if you use one-dir deploy, you will need to install all the binary directories within the same parent directory.) Tj T* ET Q Q q 1 0 0 1 62.69291 483.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (There are multipackage examples in the ) Tj /F4 10 Tf (buildtests/multipackage ) Tj /F1 10 Tf (directory.) Tj T* ET Q Q q 1 0 0 1 62.69291 450.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (PyInstaller Utilities) Tj T* ET Q Q q 1 0 0 1 62.69291 420.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (ArchiveViewer) Tj T* ET Q Q q 1 0 0 1 62.69291 386.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (python utils/ArchiveViewer.py ) Tj (<) Tj (archivefile) Tj (>) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 342.8236 cm q BT 1 0 0 1 0 26 Tm 1.487126 Tw 12 TL /F1 10 Tf 0 0 0 rg (ArchiveViewer lets you examine the contents of any archive build with ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (or executable \(PYZ,) Tj T* 0 Tw .379157 Tw (PKG or exe\). Invoke it with the target as the first arg \(It has been set up as a Send-To so it shows on the) Tj T* 0 Tw (context menu in Explorer\). The archive can be navigated using these commands:) Tj T* ET Q Q q 1 0 0 1 62.69291 326.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 0 rg (O <) Tj (nm) Tj (>) Tj T* ET Q Q q 1 0 0 1 62.69291 311.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Open the embedded archive <) Tj (nm) Tj (> \(will prompt if omitted\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 295.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL (U) Tj T* ET Q Q q 1 0 0 1 62.69291 280.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Go up one level \(go back to viewing the embedding archive\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 264.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 0 rg (X <) Tj (nm) Tj (>) Tj T* ET Q Q q 1 0 0 1 62.69291 249.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Extract nm \(will prompt if omitted\). Prompts for output filename. If none given, extracted to stdout.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 233.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL (Q) Tj T* ET Q Q q 1 0 0 1 62.69291 218.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Quit.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 200.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Futhermore ArchiveViewer has some simple console commands:) Tj T* ET Q Q q 1 0 0 1 62.69291 185.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-h, --help) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Show help.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 170.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-l, --log) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Quick contents log.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 155.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-b, --brief) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Print a python evaluable list of contents filenames.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 140.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-r, --recursive) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Used with -l or -b, applies recusive behaviour.) Tj T* ET Q Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 147.0199 0 Td (PyInstaller Manual - Multipackage function) Tj T* -147.0199 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (11) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R343': class PDFStream 343 0 obj % page stream << /Length 5728 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 735.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (BinDepend) Tj T* ET Q Q q 1 0 0 1 62.69291 701.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (python utils/BinDepend.py ) Tj (<) Tj (executable_or_dynamic_library) Tj (>) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 645.8236 cm q BT 1 0 0 1 0 38 Tm .274692 Tw 12 TL /F1 10 Tf 0 0 0 rg (BinDepend will analyze the executable you pass to it, and write to stdout all its binary dependencies. This) Tj T* 0 Tw 1.006303 Tw (is handy to find out which DLLs are required by an executable or another DLL. This module is used by) Tj T* 0 Tw .699398 Tw /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (itself to follow the chain of dependencies of binary extensions and make sure that all of them) Tj T* 0 Tw (get included in the final package.) Tj T* ET Q Q q 1 0 0 1 62.69291 615.8236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (GrabVersion \(Windows\)) Tj T* ET Q Q q 1 0 0 1 62.69291 582.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (python utils/GrabVersion.py ) Tj (<) Tj (executable_with_version_resource) Tj (>) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 526.6236 cm q BT 1 0 0 1 0 38 Tm 1.070751 Tw 12 TL /F1 10 Tf 0 0 0 rg (GrabVersion outputs text which can be eval'ed by ) Tj /F4 10 Tf (versionInfo.py ) Tj /F1 10 Tf (to reproduce a version resource.) Tj T* 0 Tw .384431 Tw (Invoke it with the full path name of a Windows executable \(with a version resource\) as the first argument.) Tj T* 0 Tw .539513 Tw (If you cut & paste \(or redirect to a file\), you can then edit the version information. The edited text file can) Tj T* 0 Tw (be used in a ) Tj /F4 10 Tf (version = myversion.txt ) Tj /F1 10 Tf (option on any executable in an ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (spec file.) Tj T* ET Q Q q 1 0 0 1 62.69291 436.6236 cm q 0 0 0 rg BT 1 0 0 1 0 74 Tm /F1 10 Tf 12 TL .682651 Tw (This was done in this way because version resources are rather strange beasts, and fully understanding) Tj T* 0 Tw 3.737674 Tw (them is probably impossible. Some elements are optional, others required, but you could spend) Tj T* 0 Tw 2.183984 Tw (unbounded amounts of time figuring this out, because it's not well documented. When you view the) Tj T* 0 Tw 2.817126 Tw (version tab on a properties dialog, there's no straightforward relationship between how the data is) Tj T* 0 Tw 1.399987 Tw (displayed and the structure of the resource itself. So the easiest thing to do is find an executable that) Tj T* 0 Tw .653516 Tw (displays the kind of information you want, grab it's resource and edit it. Certainly easier than the Version) Tj T* 0 Tw (resource wizard in VC++.) Tj T* ET Q Q q 1 0 0 1 62.69291 406.6236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Analyzing Dependencies) Tj T* ET Q Q q 1 0 0 1 62.69291 376.6236 cm q BT 1 0 0 1 0 14 Tm 2.801797 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can interactively track down dependencies, including getting cross-references by using ) Tj /F4 10 Tf (mf.py) Tj /F1 10 Tf (,) Tj T* 0 Tw (documented in section ) Tj 0 0 .501961 rg (mf.py: A modulefinder Replacement) Tj T* ET Q Q q 1 0 0 1 62.69291 343.6236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Spec Files) Tj T* ET Q Q q 1 0 0 1 62.69291 313.6236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Introduction) Tj T* ET Q Q q 1 0 0 1 62.69291 247.6236 cm q BT 1 0 0 1 0 50 Tm .374651 Tw 12 TL /F1 10 Tf 0 0 0 rg (When you run ) Tj /F4 10 Tf (utils/Makespec.py ) Tj /F1 10 Tf (\(documented in section ) Tj 0 0 .501961 rg (A spec file for your project) Tj 0 0 0 rg (\), it generates a) Tj T* 0 Tw .002093 Tw (spec file for you. In fact, you can think of ) Tj /F4 10 Tf (utils/Makespec.py ) Tj /F1 10 Tf (just like a wizard that lets you generate a) Tj T* 0 Tw 1.876457 Tw (standard spec file for most standard usages. But advanced users can learn to edit spec files to fully) Tj T* 0 Tw 2.410751 Tw (customize PyInstaller behaviour to their needs, giving beyond the standard settings provided by the) Tj T* 0 Tw (wizard.) Tj T* ET Q Q q 1 0 0 1 62.69291 217.6236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .37528 Tw (Spec files are in Python syntax. They are evaluated by pyinstaller.py. A simplistic spec file might look like) Tj T* 0 Tw (this:) Tj T* ET Q Q q 1 0 0 1 62.69291 160.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (a = Analysis\(['myscript.py']\)) Tj T* (pyz = PYZ\(a.pure\)) Tj T* (exe = EXE\(pyz, a.scripts, a.binaries, name="myapp.exe"\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 128.4236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .176412 Tw (This creates a single file deployment with all binaries \(extension modules and their dependencies\) packed) Tj T* 0 Tw (into the executable.) Tj T* ET Q Q q 1 0 0 1 62.69291 110.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A simplistic single directory deployment might look like this:) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 170.6399 0 Td (PyInstaller Manual - BinDepend) Tj T* -170.6399 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (12) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R344': class PDFStream 344 0 obj % page stream << /Length 8775 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 691.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 60 re B* Q q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F4 10 Tf 12 TL (a = Analysis\(['myscript.py']\)) Tj T* (pyz = PYZ\(a.pure\)) Tj T* (exe = EXE\(a.scripts, pyz, name="myapp.exe", exclude_binaries=1\)) Tj T* (dist = COLLECT\(exe, a.binaries, name="dist"\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 659.8236 cm q BT 1 0 0 1 0 14 Tm 3.772927 Tw 12 TL /F1 10 Tf 0 0 0 rg (Note that neither of these examples are realistic. If you want to start hacking a spec file, use) Tj T* 0 Tw /F4 10 Tf (utils/Makespec.py ) Tj /F1 10 Tf (to create a basic specfile, and tweak it \(if necessary\) from there.) Tj T* ET Q Q q 1 0 0 1 62.69291 593.8236 cm q BT 1 0 0 1 0 50 Tm 2.342765 Tw 12 TL /F1 10 Tf 0 0 0 rg (All of the classes you see above are subclasses of ) Tj /F4 10 Tf (Build.Target) Tj /F1 10 Tf (. A Target acts like a rule in a) Tj T* 0 Tw .089987 Tw (makefile. It knows enough to cache its last inputs and outputs. If its inputs haven't changed, it can assume) Tj T* 0 Tw .35881 Tw (its outputs wouldn't change on recomputation. So a spec file acts much like a makefile, only rebuilding as) Tj T* 0 Tw 2.28811 Tw (much as needs rebuilding. This means, for example, that if you change an ) Tj /F4 10 Tf (EXE ) Tj /F1 10 Tf (from ) Tj /F4 10 Tf (debug=1 ) Tj /F1 10 Tf (to) Tj T* 0 Tw /F4 10 Tf (debug=0) Tj /F1 10 Tf (, the rebuild will be nearly instantaneous.) Tj T* ET Q Q q 1 0 0 1 62.69291 527.8236 cm q BT 1 0 0 1 0 50 Tm .909431 Tw 12 TL /F1 10 Tf 0 0 0 rg (The high level view is that an ) Tj /F4 10 Tf (Analysis ) Tj /F1 10 Tf (takes a list of scripts as input, and generates three "outputs",) Tj T* 0 Tw 1.78436 Tw (held in attributes named ) Tj /F4 10 Tf (scripts) Tj /F1 10 Tf (, ) Tj /F4 10 Tf (pure ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (binaries) Tj /F1 10 Tf (. A ) Tj /F4 10 Tf (PYZ ) Tj /F1 10 Tf (\(a ) Tj /F4 10 Tf (.pyz ) Tj /F1 10 Tf (archive\) is built from the) Tj T* 0 Tw .756303 Tw (modules in pure. The ) Tj /F4 10 Tf (EXE ) Tj /F1 10 Tf (is built from the ) Tj /F4 10 Tf (PYZ) Tj /F1 10 Tf (, the scripts and, in the case of a single-file deployment,) Tj T* 0 Tw 1.535318 Tw (the binaries. In a single-directory deployment, a directory is built containing a slim executable and the) Tj T* 0 Tw (binaries.) Tj T* ET Q Q q 1 0 0 1 62.69291 497.8236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (TOC Class \(Table of Contents\)) Tj T* ET Q Q q 1 0 0 1 62.69291 479.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Before you can do much with a spec file, you need to understand the ) Tj /F4 10 Tf (TOC ) Tj /F1 10 Tf (\(Table Of Contents\) class.) Tj T* ET Q Q q 1 0 0 1 62.69291 437.8236 cm q BT 1 0 0 1 0 26 Tm .447717 Tw 12 TL /F1 10 Tf 0 0 0 rg (A ) Tj /F4 10 Tf (TOC ) Tj /F1 10 Tf (appears to be a list of tuples of the form \(name, path, typecode\). In fact, it's an ordered set, not a) Tj T* 0 Tw 1.350651 Tw (list. A TOC contains no duplicates, where uniqueness is based on name only. Furthermore, within this) Tj T* 0 Tw (constraint, a TOC preserves order.) Tj T* ET Q Q q 1 0 0 1 62.69291 395.8236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .70229 Tw (Besides the normal list methods and operations, TOC supports taking differences and intersections \(and) Tj T* 0 Tw .04528 Tw (note that adding or extending is really equivalent to union\). Furthermore, the operations can take a real list) Tj T* 0 Tw (of tuples on the right hand side. This makes excluding modules quite easy. For a pure Python module:) Tj T* ET Q Q q 1 0 0 1 62.69291 362.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (pyz = PYZ\(a.pure - [\('badmodule', '', ''\)]\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 342.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (or for an extension module in a single-directory deployment:) Tj T* ET Q Q q 1 0 0 1 62.69291 309.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (dist = COLLECT\(..., a.binaries - [\('badmodule', '', ''\)], ...\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 289.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (or for a single-file deployment:) Tj T* ET Q Q q 1 0 0 1 62.69291 256.2236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (exe = EXE\(..., a.binaries - [\('badmodule', '', ''\)], ...\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 224.2236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .077608 Tw (To add files to a TOC, you need to know about the typecodes \(or the step using the TOC won't know what) Tj T* 0 Tw (to do with the entry\).) Tj T* ET Q Q q 1 0 0 1 62.69291 218.2236 cm Q q 1 0 0 1 62.69291 92.22362 cm 1 1 1 rg n 0 126 469.8898 -18 re f* .878431 .878431 .878431 rg n 0 108 469.8898 -30 re f* 1 1 1 rg n 0 78 469.8898 -30 re f* .878431 .878431 .878431 rg n 0 48 469.8898 -30 re f* 1 1 1 rg n 0 18 469.8898 -18 re f* .960784 .960784 .862745 rg n 0 126 469.8898 -18 re f* 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 111 cm q .960784 .960784 .862745 rg n 0 0 44.8415 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL .470752 0 Td (typecode) Tj T* -0.470752 0 Td ET Q Q q 1 0 0 1 62.8415 111 cm q .960784 .960784 .862745 rg n 0 0 196.4188 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 71.25942 0 Td (description) Tj T* -71.25942 0 Td ET Q Q q 1 0 0 1 271.2604 111 cm q .960784 .960784 .862745 rg n 0 0 75.15697 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 24.51849 0 Td (name) Tj T* -24.51849 0 Td ET Q Q q 1 0 0 1 358.4173 111 cm q .960784 .960784 .862745 rg n 0 0 105.4724 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 42.18122 0 Td (path) Tj T* -42.18122 0 Td ET Q Q 0 0 0 rg q 1 0 0 1 6 93 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL ('EXTENSION') Tj T* ET Q Q q 1 0 0 1 62.8415 93 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (An extension module.) Tj T* ET Q Q q 1 0 0 1 271.2604 81 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (Python internal) Tj T* (name.) Tj T* ET Q Q q 1 0 0 1 358.4173 93 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Full path name in build.) Tj T* ET Q Q q 1 0 0 1 6 63 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL ('PYSOURCE') Tj T* ET Q Q q 1 0 0 1 62.8415 63 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A script.) Tj T* ET Q Q q 1 0 0 1 271.2604 51 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (Python internal) Tj T* (name.) Tj T* ET Q Q q 1 0 0 1 358.4173 63 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Full path name in build.) Tj T* ET Q Q q 1 0 0 1 6 33 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL ('PYMODULE') Tj T* ET Q Q q 1 0 0 1 62.8415 21 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (A pure Python module \(including __init__) Tj T* (modules\).) Tj T* ET Q Q q 1 0 0 1 271.2604 21 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (Python internal) Tj T* (name.) Tj T* ET Q Q q 1 0 0 1 358.4173 33 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Full path name in build.) Tj T* ET Q Q q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL ('PYZ') Tj T* ET Q Q q 1 0 0 1 62.8415 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A .pyz archive \(archive_rt.ZlibArchive\).) Tj T* ET Q Q q 1 0 0 1 271.2604 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Runtime name.) Tj T* ET Q Q q 1 0 0 1 358.4173 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Full path name in build.) Tj T* ET Q Q q 1 J 1 j 0 0 0 RG .25 w n 0 0 m 469.8898 0 l S n 0 108 m 469.8898 108 l S n 0 78 m 469.8898 78 l S n 0 48 m 469.8898 48 l S n 0 18 m 469.8898 18 l S n 56.8415 0 m 56.8415 126 l S n 265.2604 0 m 265.2604 126 l S n 352.4173 0 m 352.4173 126 l S n 0 126 m 469.8898 126 l S n 0 0 m 0 126 l S n 469.8898 0 m 469.8898 126 l S Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 126.7449 0 Td (PyInstaller Manual - TOC Class \(Table of Contents\)) Tj T* -126.7449 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (13) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R345': class PDFStream 345 0 obj % page stream << /Length 9930 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 669.0236 cm 1 1 1 rg n 0 84 469.8898 -18 re f* .878431 .878431 .878431 rg n 0 66 469.8898 -18 re f* 1 1 1 rg n 0 48 469.8898 -18 re f* .878431 .878431 .878431 rg n 0 30 469.8898 -30 re f* 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 69 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL ('PKG') Tj T* ET Q Q q 1 0 0 1 62.8415 69 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A pkg archive \(carchive4.CArchive\).) Tj T* ET Q Q q 1 0 0 1 271.2604 69 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Runtime name.) Tj T* ET Q Q q 1 0 0 1 358.4173 69 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Full path name in build.) Tj T* ET Q Q q 1 0 0 1 6 51 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL ('BINARY') Tj T* ET Q Q q 1 0 0 1 62.8415 51 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A shared library.) Tj T* ET Q Q q 1 0 0 1 271.2604 51 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Runtime name.) Tj T* ET Q Q q 1 0 0 1 358.4173 51 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Full path name in build.) Tj T* ET Q Q q 1 0 0 1 6 33 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL ('DATA') Tj T* ET Q Q q 1 0 0 1 62.8415 33 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Aribitrary files.) Tj T* ET Q Q q 1 0 0 1 271.2604 33 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Runtime name.) Tj T* ET Q Q q 1 0 0 1 358.4173 33 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Full path name in build.) Tj T* ET Q Q q 1 0 0 1 6 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL ('OPTION') Tj T* ET Q Q q 1 0 0 1 62.8415 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (A runtime runtime option \(frozen into the) Tj T* (executable\).) Tj T* ET Q Q q 1 0 0 1 271.2604 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The option.) Tj T* ET Q Q q 1 0 0 1 358.4173 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Unused.) Tj T* ET Q Q q 1 J 1 j 0 0 0 RG .25 w n 0 84 m 469.8898 84 l S n 0 66 m 469.8898 66 l S n 0 48 m 469.8898 48 l S n 0 30 m 469.8898 30 l S n 56.8415 0 m 56.8415 84 l S n 265.2604 0 m 265.2604 84 l S n 352.4173 0 m 352.4173 84 l S n 0 0 m 0 84 l S n 469.8898 0 m 469.8898 84 l S n 0 0 m 469.8898 0 l S Q Q q 1 0 0 1 62.69291 669.0236 cm Q q 1 0 0 1 62.69291 651.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You can force the include of any file in much the same way you do excludes:) Tj T* ET Q Q q 1 0 0 1 62.69291 605.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (collect = COLLECT\(a.binaries +) Tj T* ( [\('readme', '/my/project/readme', 'DATA'\)], ...\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 585.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (or even:) Tj T* ET Q Q q 1 0 0 1 62.69291 540.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (collect = COLLECT\(a.binaries,) Tj T* ( [\('readme', '/my/project/readme', 'DATA'\)], ...\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 520.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (\(that is, you can use a list of tuples in place of a ) Tj /F4 10 Tf (TOC ) Tj /F1 10 Tf (in most cases\).) Tj T* ET Q Q q 1 0 0 1 62.69291 478.6236 cm q BT 1 0 0 1 0 26 Tm .603516 Tw 12 TL /F1 10 Tf 0 0 0 rg (There's not much reason to use this technique for ) Tj /F4 10 Tf (PYSOURCE) Tj /F1 10 Tf (, since an ) Tj /F4 10 Tf (Analysis ) Tj /F1 10 Tf (takes a list of scripts) Tj T* 0 Tw .456412 Tw (as input. For ) Tj /F4 10 Tf (PYMODULEs ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (EXTENSIONs) Tj /F1 10 Tf (, the hook mechanism discussed here is better because you) Tj T* 0 Tw (won't have to remember how you got it working next time.) Tj T* ET Q Q q 1 0 0 1 62.69291 448.6236 cm q BT 1 0 0 1 0 14 Tm .880941 Tw 12 TL /F1 10 Tf 0 0 0 rg (This technique is most useful for data files \(see the ) Tj /F4 10 Tf (Tree ) Tj /F1 10 Tf (class below for a way to build a ) Tj /F4 10 Tf (TOC ) Tj /F1 10 Tf (from a) Tj T* 0 Tw (directory tree\), and for runtime options. The options the run executables understand are:) Tj T* ET Q Q q 1 0 0 1 62.69291 442.6236 cm Q q 1 0 0 1 62.69291 304.6236 cm 1 1 1 rg n 0 138 469.8898 -18 re f* .878431 .878431 .878431 rg n 0 120 469.8898 -30 re f* 1 1 1 rg n 0 90 469.8898 -30 re f* .878431 .878431 .878431 rg n 0 60 469.8898 -30 re f* 1 1 1 rg n 0 30 469.8898 -30 re f* .960784 .960784 .862745 rg n 0 138 469.8898 -18 re f* 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 4.379379 123 cm q .960784 .960784 .862745 rg n 0 0 32.22 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL -1.620621 0 Td (Option) Tj T* 1.620621 0 Td ET Q Q q 1 0 0 1 44.89081 123 cm q .960784 .960784 .862745 rg n 0 0 55.01 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL -2.087952 0 Td (Description) Tj T* 2.087952 0 Td ET Q Q q 1 0 0 1 109.8129 123 cm q .960784 .960784 .862745 rg n 0 0 72.68943 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 15.77972 0 Td (Example) Tj T* -15.77972 0 Td ET Q Q q 1 0 0 1 194.5023 123 cm q .960784 .960784 .862745 rg n 0 0 269.3875 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 120.8037 0 Td (Notes) Tj T* -120.8037 0 Td ET Q Q 0 0 0 rg q 1 0 0 1 6 105 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (v) Tj T* ET Q Q q 1 0 0 1 46.97876 93 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (Verbose) Tj T* (imports) Tj T* ET Q Q q 1 0 0 1 109.8129 105 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (\('v', '', 'OPTION'\)) Tj T* ET Q Q q 1 0 0 1 194.5023 105 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Same as Python -v ...) Tj T* ET Q Q q 1 0 0 1 6 75 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (u) Tj T* ET Q Q q 1 0 0 1 46.97876 63 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (Unbuffered) Tj T* (stdio) Tj T* ET Q Q q 1 0 0 1 109.8129 63 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (\('u', '',) Tj T* ('OPTION'\)) Tj T* ET Q Q q 1 0 0 1 194.5023 75 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Same as Python -u ...) Tj T* ET Q Q q 1 0 0 1 6 33 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (W) Tj T* (spec) Tj T* ET Q Q q 1 0 0 1 46.97876 33 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (Warning) Tj T* (option) Tj T* ET Q Q q 1 0 0 1 109.8129 33 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (\('W ignore', '',) Tj T* ('OPTION'\)) Tj T* ET Q Q q 1 0 0 1 194.5023 45 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Python 2.1+ only.) Tj T* ET Q Q q 1 0 0 1 6 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (s) Tj T* ET Q Q q 1 0 0 1 46.97876 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Use site.py) Tj T* ET Q Q q 1 0 0 1 109.8129 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (\('s', '', 'OPTION'\)) Tj T* ET Q Q q 1 0 0 1 194.5023 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (The opposite of Python's -S flag. Note that site.py must be in) Tj T* (the executable's directory to be used.) Tj T* ET Q Q q 1 J 1 j 0 0 0 RG .25 w n 0 120 m 469.8898 120 l S n 0 90 m 469.8898 90 l S n 0 60 m 469.8898 60 l S n 0 30 m 469.8898 30 l S n 40.97876 0 m 40.97876 138 l S n 103.8129 0 m 103.8129 138 l S n 188.5023 0 m 188.5023 138 l S n 0 138 m 469.8898 138 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 138 l S n 469.8898 0 m 469.8898 138 l S Q Q q 1 0 0 1 62.69291 304.6236 cm Q q 1 0 0 1 62.69291 262.6236 cm q BT 1 0 0 1 0 26 Tm .384651 Tw 12 TL /F1 10 Tf 0 0 0 rg (Advanced users should note that by using set differences and intersections, it becomes possible to factor) Tj T* 0 Tw 1.780814 Tw (out common modules, and deploy a project containing multiple executables with minimal redundancy.) Tj T* 0 Tw (You'll need some top level code in each executable to mount the common ) Tj /F4 10 Tf (PYZ) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 232.6236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Target Subclasses) Tj T* ET Q Q q 1 0 0 1 62.69291 205.6236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Analysis) Tj T* ET Q Q q 1 0 0 1 62.69291 172.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (Analysis\(scripts, pathex=None, hookspath=None, excludes=None\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 152.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (scripts) Tj T* ET Q Q q 1 0 0 1 62.69291 137.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (a list of scripts specified as file names.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 121.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (pathex) Tj T* ET Q Q q 1 0 0 1 62.69291 106.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (an optional list of paths to be searched before sys.path.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 90.42362 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (hiddenimports) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 153.9699 0 Td (PyInstaller Manual - Target Subclasses) Tj T* -153.9699 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (14) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R346': class PDFStream 346 0 obj % page stream << /Length 7062 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 14 Tm 1.090651 Tw 12 TL /F1 10 Tf 0 0 0 rg (an optional list of additional \(hidden\) modules to include. Please refer to ) Tj 0 0 .501961 rg (Listing Hidden Imports ) Tj 0 0 0 rg (for) Tj T* 0 Tw (details.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 710.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (hookspath) Tj T* ET Q Q q 1 0 0 1 62.69291 683.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 14 Tm .349318 Tw 12 TL /F1 10 Tf 0 0 0 rg (an optional list of additional paths to search for hooks \(hook-modules\). Please refer to ) Tj 0 0 .501961 rg (Listing Hidden) Tj T* 0 Tw (Imports ) Tj 0 0 0 rg (for details.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 667.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (excludes) Tj T* ET Q Q q 1 0 0 1 62.69291 640.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 2.133735 Tw (an optional list of module or package names \(their Python names, not path names\) that will be) Tj T* 0 Tw (ignored \(as though they were not found\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 622.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (An Analysis has five outputs, all ) Tj /F4 10 Tf (TOCs ) Tj /F1 10 Tf (accessed as attributes of the ) Tj /F4 10 Tf (Analysis) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 606.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (scripts) Tj T* ET Q Q q 1 0 0 1 62.69291 591.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The scripts you gave Analysis as input, with any runtime hook scripts prepended.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 575.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (pure) Tj T* ET Q Q q 1 0 0 1 62.69291 560.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The pure Python modules.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 544.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (binaries) Tj T* ET Q Q q 1 0 0 1 62.69291 505.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 26 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 26 Tm 3.101797 Tw 12 TL /F1 10 Tf 0 0 0 rg (The extension modules and their dependencies. The secondary dependencies are filtered. On) Tj T* 0 Tw .134431 Tw (Windows, a long list of MS dlls are excluded. On Linux/Unix, any shared lib in ) Tj /F4 10 Tf (/lib ) Tj /F1 10 Tf (or ) Tj /F4 10 Tf (/usr/lib ) Tj /F1 10 Tf (is) Tj T* 0 Tw (excluded.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 489.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (datas) Tj T* ET Q Q q 1 0 0 1 62.69291 462.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.235984 Tw (Data-file dependencies. These are data-file that are found to be needed by modules. They can be) Tj T* 0 Tw (anything: plugins, font files, etc.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 446.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (zipfiles) Tj T* ET Q Q q 1 0 0 1 62.69291 431.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The zipfiles dependencies \(usually ) Tj /F4 10 Tf (egg-files) Tj /F1 10 Tf (\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 404.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (PYZ) Tj T* ET Q Q q 1 0 0 1 62.69291 370.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (PYZ\(toc, name=None, level=9\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 350.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (toc) Tj T* ET Q Q q 1 0 0 1 62.69291 335.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (a ) Tj /F4 10 Tf (TOC) Tj /F1 10 Tf (, normally an ) Tj /F4 10 Tf (Analysis.pure) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 319.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (name) Tj T* ET Q Q q 1 0 0 1 62.69291 304.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (A filename for the ) Tj /F4 10 Tf (.pyz) Tj /F1 10 Tf (. Normally not needed, as the generated name will do fine.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 288.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (level) Tj T* ET Q Q q 1 0 0 1 62.69291 273.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The Zlib compression level to use. If 0, the zlib module is not required.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 246.8236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (PKG) Tj T* ET Q Q q 1 0 0 1 62.69291 216.8236 cm q BT 1 0 0 1 0 14 Tm .961807 Tw 12 TL /F1 10 Tf 0 0 0 rg (Generally, you will not need to create your own ) Tj /F4 10 Tf (PKGs) Tj /F1 10 Tf (, as the ) Tj /F4 10 Tf (EXE ) Tj /F1 10 Tf (will do it for you. This is one way to) Tj T* 0 Tw (include read-only data in a single-file deployment, however.) Tj T* ET Q Q q 1 0 0 1 62.69291 183.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (PKG\(toc, name=None, cdict=None, exclude_binaries=0\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 163.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (toc) Tj T* ET Q Q q 1 0 0 1 62.69291 148.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (a ) Tj /F4 10 Tf (TOC) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 132.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (name) Tj T* ET Q Q q 1 0 0 1 62.69291 117.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (a filename for the ) Tj /F4 10 Tf (PKG ) Tj /F1 10 Tf (\(optional\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 101.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (cdict) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 185.6499 0 Td (PyInstaller Manual - PYZ) Tj T* -185.6499 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (15) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R347': class PDFStream 347 0 obj % page stream << /Length 6707 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 714.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 26 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 26 Tm .44784 Tw 12 TL /F1 10 Tf 0 0 0 rg (a dictionary that specifies compression by typecode. For example, ) Tj /F4 10 Tf (PYZ ) Tj /F1 10 Tf (is left uncompressed so that) Tj T* 0 Tw 2.092927 Tw (it can be accessed inside the ) Tj /F4 10 Tf (PKG) Tj /F1 10 Tf (. The default uses sensible values. If zlib is not available, no) Tj T* 0 Tw (compression is used.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 698.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (exclude_binaries) Tj T* ET Q Q q 1 0 0 1 62.69291 671.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 14 Tm .274987 Tw 12 TL /F1 10 Tf 0 0 0 rg (If 1, ) Tj /F4 10 Tf (EXTENSIONs ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (BINARYs ) Tj /F1 10 Tf (will be left out of the ) Tj /F4 10 Tf (PKG) Tj /F1 10 Tf (, and forwarded to its container \(usually a) Tj T* 0 Tw /F4 10 Tf (COLLECT) Tj /F1 10 Tf (\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 644.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (EXE) Tj T* ET Q Q q 1 0 0 1 62.69291 610.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (EXE\(*args, **kws\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 590.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (args) Tj T* ET Q Q q 1 0 0 1 62.69291 575.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (One or more arguments which are either ) Tj /F4 10 Tf (TOCs ) Tj /F1 10 Tf (or ) Tj /F4 10 Tf (Targets) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 559.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (kws) Tj T* ET Q Q q 1 0 0 1 62.69291 219.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 327 Tm T* ET q 1 0 0 1 20 325 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Possible keyword arguments:) Tj T* ET Q Q q 1 0 0 1 20 309 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (console) Tj T* ET Q Q q 1 0 0 1 20 282 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.446412 Tw (Always 1 on Linux/unix. On Windows, governs whether to use the console executable, or the) Tj T* 0 Tw (Windows subsystem executable.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 266 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (debug) Tj T* ET Q Q q 1 0 0 1 20 239 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 14 Tm .677984 Tw 12 TL /F1 10 Tf 0 0 0 rg (Setting to 1 gives you progress messages from the executable \(for a ) Tj /F4 10 Tf (console=0) Tj /F1 10 Tf (, these will be) Tj T* 0 Tw (annoying MessageBoxes\).) Tj T* ET Q Q q Q Q q 1 0 0 1 20 223 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (name) Tj T* ET Q Q q 1 0 0 1 20 208 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The filename for the executable.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 192 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (exclude_binaries) Tj T* ET Q Q q 1 0 0 1 20 177 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Forwarded to the ) Tj /F4 10 Tf (PKG ) Tj /F1 10 Tf (the ) Tj /F4 10 Tf (EXE ) Tj /F1 10 Tf (builds.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 161 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (icon) Tj T* ET Q Q q 1 0 0 1 20 134 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 14 Tm 11.73798 Tw 12 TL /F1 10 Tf 0 0 0 rg (Windows NT family only. ) Tj /F4 10 Tf (icon='myicon.ico' ) Tj /F1 10 Tf (to use an icon file, or) Tj T* 0 Tw /F4 10 Tf (icon='notepad.exe,0' ) Tj /F1 10 Tf (to grab an icon resource.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 118 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (version) Tj T* ET Q Q q 1 0 0 1 20 79 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 26 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 26 Tm 2.549974 Tw 12 TL /F1 10 Tf 0 0 0 rg (Windows NT family only. ) Tj /F4 10 Tf (version='myversion.txt') Tj /F1 10 Tf (. Use ) Tj /F4 10 Tf (GrabVersion.py ) Tj /F1 10 Tf (to steal a) Tj T* 0 Tw .396235 Tw (version resource from an executable, and then edit the ouput to create your own. \(The syntax of) Tj T* 0 Tw (version resources is so arcane that I wouldn't attempt to write one from scratch.\)) Tj T* ET Q Q q Q Q q 1 0 0 1 20 63 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (append_pkg) Tj T* ET Q Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 50 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 50 Tm .037209 Tw 12 TL /F1 10 Tf 0 0 0 rg (If ) Tj /F4 10 Tf (True) Tj /F1 10 Tf (, then append the PKG archive to the EXE. If ) Tj /F4 10 Tf (False) Tj /F1 10 Tf (, place the PKG archive in a separate) Tj T* 0 Tw .396905 Tw (file ) Tj /F4 10 Tf (exename.pkg) Tj /F1 10 Tf (. The default depends on whether Make.py was given the ) Tj /F4 10 Tf (-n ) Tj /F1 10 Tf (argument when) Tj T* 0 Tw 5.11748 Tw (building the loader. The default is ) Tj /F4 10 Tf (True ) Tj /F1 10 Tf (on Windows. On non-ELF platforms where) Tj T* 0 Tw 2.336905 Tw (concatenating arbitrary data to an executable does not work, ) Tj /F4 10 Tf (append_pkg ) Tj /F1 10 Tf (must be set to) Tj T* 0 Tw /F4 10 Tf (False) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q Q Q q 1 0 0 1 62.69291 192.8236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (DLL) Tj T* ET Q Q q 1 0 0 1 62.69291 138.8236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL 1.64784 Tw (On Windows, this provides support for doing in-process COM servers. It is not generalized. However,) Tj T* 0 Tw .506098 Tw (embedders can follow the same model to build a special purpose DLL so the Python support in their app) Tj T* 0 Tw 1.011488 Tw (is hidden. You will need to write your own dll, but thanks to Allan Green for refactoring the C code and) Tj T* 0 Tw (making that a managable task.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 185.3699 0 Td (PyInstaller Manual - EXE) Tj T* -185.3699 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (16) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R348': class PDFStream 348 0 obj % page stream << /Length 6397 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 738.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (COLLECT) Tj T* ET Q Q q 1 0 0 1 62.69291 704.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (COLLECT\(*args, **kws\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 684.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (args) Tj T* ET Q Q q 1 0 0 1 62.69291 669.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (One or more arguments which are either ) Tj /F4 10 Tf (TOCs ) Tj /F1 10 Tf (or ) Tj /F4 10 Tf (Targets) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 653.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (kws) Tj T* ET Q Q q 1 0 0 1 62.69291 607.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 33 Tm T* ET q 1 0 0 1 20 31 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Possible keyword arguments:) Tj T* ET Q Q q 1 0 0 1 20 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (name) Tj T* ET Q Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The name of the directory to be built.) Tj T* ET Q Q q Q Q q Q Q q 1 0 0 1 62.69291 580.8236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Tree) Tj T* ET Q Q q 1 0 0 1 62.69291 547.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (Tree\(root, prefix=None, excludes=None\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 527.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (root) Tj T* ET Q Q q 1 0 0 1 62.69291 512.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The root of the tree \(on the build system\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 496.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (prefix) Tj T* ET Q Q q 1 0 0 1 62.69291 481.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Optional prefix to the names on the target system.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 465.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (excludes) Tj T* ET Q Q q 1 0 0 1 62.69291 388.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 64 Tm T* ET q 1 0 0 1 20 62 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A list of names to exclude. Two forms are allowed:) Tj T* ET Q Q q 1 0 0 1 20 46 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (name) Tj T* ET Q Q q 1 0 0 1 20 31 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (files with this basename will be excluded \(do not include the path\).) Tj T* ET Q Q q Q Q q 1 0 0 1 20 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (*.ext) Tj T* ET Q Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (any file with the given extension will be excluded.) Tj T* ET Q Q q Q Q q Q Q q 1 0 0 1 62.69291 370.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Since a ) Tj /F4 10 Tf (Tree ) Tj /F1 10 Tf (is a ) Tj /F4 10 Tf (TOC) Tj /F1 10 Tf (, you can also use the exclude technique described above in the section on ) Tj /F4 10 Tf (TOCs) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 343.6236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (MERGE) Tj T* ET Q Q q 1 0 0 1 62.69291 325.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (With the MERGE function we can create a group of interdependent packages.) Tj T* ET Q Q q 1 0 0 1 62.69291 292.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (MERGE\(*args\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 272.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (*args) Tj T* ET Q Q q 1 0 0 1 62.69291 245.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .249513 Tw (This is a list of tuples. The first element of the tuple is an analysis object, the second one is the script) Tj T* 0 Tw (name without extension and the third one is the final name.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 191.4236 cm q BT 1 0 0 1 0 38 Tm 1.863735 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (MERGE ) Tj /F1 10 Tf (function filters the analysis to avoid duplication of libraries and modules. As a result the) Tj T* 0 Tw 2.796647 Tw (packages generated will be connected. Furthermore, to ensure the consistency of dependencies, it) Tj T* 0 Tw 2.053984 Tw (replaces the temporary names with the actual names. MERGE is used after the analysis phase and) Tj T* 0 Tw (before ) Tj /F4 10 Tf (EXE ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (COLLECT) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 173.4236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Here is spec file example with ) Tj /F4 10 Tf (MERGE ) Tj /F1 10 Tf (function:) Tj T* ET Q Q q 1 0 0 1 62.69291 92.22362 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 72 re B* Q q 0 0 0 rg BT 1 0 0 1 0 50 Tm /F4 10 Tf 12 TL (## Where the package folders will be built, and the shortcuts will reside) Tj T* (TargetDir = os.path.abspath\(os.path.join\('..','..','Client','Programs'\)\)) Tj T* T* (## The application names) Tj T* (AppNames = [d for d in os.listdir\(os.getcwd\(\)\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 172.3149 0 Td (PyInstaller Manual - COLLECT) Tj T* -172.3149 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (17) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R349': class PDFStream 349 0 obj % page stream << /Length 3777 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 309.473 cm q q .87797 0 0 .87797 0 0 cm q 1 0 0 1 6.6 7.517338 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 534 504 re B* Q q 0 0 0 rg BT 1 0 0 1 0 482 Tm /F4 10 Tf 12 TL ( if os.path.isdir\(d\)) Tj T* ( and d[0]!='.') Tj T* ( and d[0:6]!='Common') Tj T* ( and d != 'build') Tj T* ( and d != 'dummy']) Tj T* T* (## Build MERGE arguments \(analysis object, script base name, final exe path\)) Tj T* (# Start with the dummy package) Tj T* (Analyses = [\(Analysis\([os.path.join\('dummy','dummy.py'\)]\),) Tj T* ( 'dummy', os.path.join\('dummy','dummy.exe'\)\)) Tj T* ( ]) Tj T* T* (# NOTE: this assumes that the main script in each is appname.pyw in the appname folder) Tj T* (Analyses += [\(Analysis\([os.path.join\(appname, appname + '.pyw'\)]\),) Tj T* ( appname, os.path.join\(appname,appname+'.exe'\)\)) Tj T* ( for appname in AppNames]) Tj T* T* (## Merge all the dependencies) Tj T* (MERGE\(*Analyses\)) Tj T* T* (## Build each app) Tj T* (for anal, basename, exename in Analyses:) Tj T* ( pyz = PYZ\(anal.pure\)) Tj T* ( exe = EXE\(pyz,) Tj T* ( anal.scripts,) Tj T* ( anal.dependencies,) Tj T* ( exclude_binaries=1,) Tj T* ( name=exename,) Tj T* ( version='FalconVersion.txt',) Tj T* ( debug=False,) Tj T* ( strip=False,) Tj T* ( upx=True,) Tj T* ( console=False \)) Tj T* ( dist = COLLECT\(exe,) Tj T* ( anal.binaries,) Tj T* ( anal.zipfiles,) Tj T* ( anal.datas,) Tj T* ( strip=False,) Tj T* ( ###upx=True if \(basename == 'dummy'\) else False,) Tj T* ( upx=False,) Tj T* ( name=os.path.join\(TargetDir,basename\)\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 276.473 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (When Things Go Wrong) Tj T* ET Q Q q 1 0 0 1 62.69291 246.473 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Recipes and Instructions for special Modules) Tj T* ET Q Q q 1 0 0 1 62.69291 216.473 cm q BT 1 0 0 1 0 14 Tm .943318 Tw 12 TL /F1 10 Tf 0 0 0 rg (Code examples for some modules needing special care and some common issues are available on our) Tj T* 0 Tw 0 0 .501961 rg (Recipe ) Tj 0 0 0 rg (web-page.) Tj T* ET Q Q q 1 0 0 1 62.69291 186.473 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Finding out What Went Wrong) Tj T* ET Q Q q 1 0 0 1 62.69291 159.473 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Buildtime Warnings) Tj T* ET Q Q q 1 0 0 1 62.69291 105.473 cm q BT 1 0 0 1 0 38 Tm .293318 Tw 12 TL /F1 10 Tf 0 0 0 rg (When an ) Tj /F4 10 Tf (Analysis ) Tj /F1 10 Tf (step runs, it produces a warnings file \(named ) Tj /F4 10 Tf (warnproject.txt) Tj /F1 10 Tf (\) in the spec file's) Tj T* 0 Tw .247674 Tw (directory. Generally, most of these warnings are harmless. For example, ) Tj /F4 10 Tf (os.py ) Tj /F1 10 Tf (\(which is cross-platform\)) Tj T* 0 Tw 1.19686 Tw (works by figuring out what platform it is on, then importing \(and rebinding names from\) the appropriate) Tj T* 0 Tw (platform-specific module. So analyzing ) Tj /F4 10 Tf (os.py ) Tj /F1 10 Tf (will produce a set of warnings like:) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 141.7449 0 Td (PyInstaller Manual - When Things Go Wrong) Tj T* -141.7449 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (18) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R350': class PDFStream 350 0 obj % page stream << /Length 6463 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 703.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (WARNING: no module named dos \(conditional import by os\)) Tj T* (WARNING: no module named ce \(conditional import by os\)) Tj T* (WARNING: no module named os2 \(conditional import by os\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 647.8236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL 1.517045 Tw (Note that the analysis has detected that the import is within a conditional block \(an if statement\). The) Tj T* 0 Tw 1.742765 Tw (analysis also detects if an import within a function or class, \(delayed\) or at the top level. A top-level,) Tj T* 0 Tw .703984 Tw (non-conditional import failure is really a hard error. There's at least a reasonable chance that conditional) Tj T* 0 Tw (and / or delayed import will be handled gracefully at runtime.) Tj T* ET Q Q q 1 0 0 1 62.69291 605.8236 cm q BT 1 0 0 1 0 26 Tm 2.897485 Tw 12 TL /F1 10 Tf 0 0 0 rg (Ignorable warnings may also be produced when a class or function is declared in a package \(an) Tj T* 0 Tw 1.258555 Tw /F4 10 Tf (__init__.py ) Tj /F1 10 Tf (module\), and the import specifies ) Tj /F4 10 Tf (package.name) Tj /F1 10 Tf (. In this case, the analysis can't tell if) Tj T* 0 Tw (name is supposed to refer to a submodule of package.) Tj T* ET Q Q q 1 0 0 1 62.69291 563.8236 cm q BT 1 0 0 1 0 26 Tm 2.244597 Tw 12 TL /F1 10 Tf 0 0 0 rg (Warnings are also produced when an ) Tj /F4 10 Tf (__import__) Tj /F1 10 Tf (, ) Tj /F4 10 Tf (exec ) Tj /F1 10 Tf (or ) Tj /F4 10 Tf (eval ) Tj /F1 10 Tf (statement is encountered. The) Tj T* 0 Tw 1.329269 Tw /F4 10 Tf (__import__ ) Tj /F1 10 Tf (warnings should almost certainly be investigated. Both ) Tj /F4 10 Tf (exec ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (eval ) Tj /F1 10 Tf (can be used to) Tj T* 0 Tw (implement import hacks, but usually their use is more benign.) Tj T* ET Q Q q 1 0 0 1 62.69291 533.8236 cm q BT 1 0 0 1 0 14 Tm 1.19311 Tw 12 TL /F1 10 Tf 0 0 0 rg (Any problem detected here can be handled by hooking the analysis of the module. See ) Tj 0 0 .501961 rg (Listing Hidden) Tj T* 0 Tw (Imports ) Tj 0 0 0 rg (below for how to do it.) Tj T* ET Q Q q 1 0 0 1 62.69291 506.8236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Getting Debug Messages) Tj T* ET Q Q q 1 0 0 1 62.69291 476.8236 cm q BT 1 0 0 1 0 14 Tm 5.465366 Tw 12 TL /F1 10 Tf 0 0 0 rg (Debug messages for PyInstaller can be enabled by passing the ) Tj /F4 10 Tf (--log-level ) Tj /F1 10 Tf (flag to the) Tj T* 0 Tw /F4 10 Tf (pyinstaller.py ) Tj /F1 10 Tf (script:) Tj T* ET Q Q q 1 0 0 1 62.69291 443.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyinstaller.py --log-level=DEBUG ) Tj (<) Tj (scriptname) Tj (>) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 399.6236 cm q BT 1 0 0 1 0 26 Tm .51561 Tw 12 TL /F1 10 Tf 0 0 0 rg (Setting ) Tj /F4 10 Tf (debug=1 ) Tj /F1 10 Tf (on an ) Tj /F4 10 Tf (EXE ) Tj /F1 10 Tf (will cause the executable to put out progress messages \(for console apps,) Tj T* 0 Tw .197209 Tw (these go to stdout; for Windows apps, these show as MessageBoxes\). This can be useful if you are doing) Tj T* 0 Tw (complex packaging, or your app doesn't seem to be starting, or just to learn how the runtime works.) Tj T* ET Q Q q 1 0 0 1 62.69291 372.6236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Getting Python's Verbose Imports) Tj T* ET Q Q q 1 0 0 1 62.69291 330.6236 cm q BT 1 0 0 1 0 26 Tm .525542 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can also pass a ) Tj /F4 10 Tf (-v ) Tj /F1 10 Tf (\(verbose imports\) flag to the embedded Python. This can be extremely useful. I) Tj T* 0 Tw .467882 Tw (usually try it even on apparently working apps, just to make sure that I'm always getting my copies of the) Tj T* 0 Tw (modules and no import has leaked out to the installed Python.) Tj T* ET Q Q q 1 0 0 1 62.69291 300.6236 cm q BT 1 0 0 1 0 14 Tm .272488 Tw 12 TL /F1 10 Tf 0 0 0 rg (You set this \(like the other runtime options\) by feeding a phone ) Tj /F4 10 Tf (TOC ) Tj /F1 10 Tf (entry to the ) Tj /F4 10 Tf (EXE) Tj /F1 10 Tf (. The easiest way to) Tj T* 0 Tw (do this is to change the ) Tj /F4 10 Tf (EXE ) Tj /F1 10 Tf (from:) Tj T* ET Q Q q 1 0 0 1 62.69291 267.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (EXE\(..., anal.scripts, ....\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 247.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (to:) Tj T* ET Q Q q 1 0 0 1 62.69291 214.2236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (EXE\(..., anal.scripts + [\('v', '', 'OPTION'\)], ...\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 194.2236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (These messages will always go to ) Tj /F4 10 Tf (stdout) Tj /F1 10 Tf (, so you won't see them on Windows if ) Tj /F4 10 Tf (console=0) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 164.2236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Helping PyInstaller Find Modules) Tj T* ET Q Q q 1 0 0 1 62.69291 137.2236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Extending the Path) Tj T* ET Q Q q 1 0 0 1 62.69291 95.22362 cm q BT 1 0 0 1 0 26 Tm 3.570651 Tw 12 TL /F1 10 Tf 0 0 0 rg (When the analysis phase cannot find needed modules, it may be that the code is manipulating) Tj T* 0 Tw 1.335868 Tw /F4 10 Tf (sys.path) Tj /F1 10 Tf (. The easiest thing to do in this case is tell ) Tj /F4 10 Tf (Analysis ) Tj /F1 10 Tf (about the new directory through the) Tj T* 0 Tw (second arg to the constructor:) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 138.9599 0 Td (PyInstaller Manual - Getting Debug Messages) Tj T* -138.9599 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (19) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R351': class PDFStream 351 0 obj % page stream << /Length 7079 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 715.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (anal = Analysis\(['somedir/myscript.py'],) Tj T* ( ['path/to/thisdir', 'path/to/thatdir']\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 695.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (In this case, the ) Tj /F4 10 Tf (Analysis ) Tj /F1 10 Tf (will have a search path:) Tj T* ET Q Q q 1 0 0 1 62.69291 662.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (['somedir', 'path/to/thisdir', 'path/to/thatdir'] + sys.path) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 642.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (You can do the same when running ) Tj /F4 10 Tf (utils/Makespec.py ) Tj /F1 10 Tf (or ) Tj /F4 10 Tf (pyinstaller.py) Tj /F1 10 Tf (:) Tj T* ET Q Q q 1 0 0 1 62.69291 597.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (utils/Makespec.py --paths=path/to/thisdir;path/to/thatdir ...) Tj T* (pyinstaller.py --paths=path/to/thisdir;path/to/thatdir ...) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 577.4236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (\(on *nix, use ) Tj /F4 10 Tf (: ) Tj /F1 10 Tf (as the path separator\).) Tj T* ET Q Q q 1 0 0 1 62.69291 550.4236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Listing Hidden Imports) Tj T* ET Q Q q 1 0 0 1 62.69291 496.4236 cm q BT 1 0 0 1 0 38 Tm .915984 Tw 12 TL /F1 10 Tf 0 0 0 rg (Hidden imports are fairly common. These can occur when the code is using ) Tj /F4 10 Tf (__import__ ) Tj /F1 10 Tf (\(or, perhaps) Tj T* 0 Tw .227765 Tw /F4 10 Tf (exec ) Tj /F1 10 Tf (or ) Tj /F4 10 Tf (eval) Tj /F1 10 Tf (\), in which case you will see a warning in the ) Tj /F4 10 Tf (warnproject.txt ) Tj /F1 10 Tf (file. They can also occur) Tj T* 0 Tw 1.109986 Tw (when an extension module uses the Python/C API to do an import, in which case Analysis can't detect) Tj T* 0 Tw (anything.) Tj T* ET Q Q q 1 0 0 1 62.69291 454.4236 cm q BT 1 0 0 1 0 26 Tm 1.536457 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can verify that hidden import is the problem by using Python's verbose imports flag. If the import) Tj T* 0 Tw 3.08229 Tw (messages say "module not found", but the ) Tj /F4 10 Tf (warnproject.txt ) Tj /F1 10 Tf (file has no "no module named...") Tj T* 0 Tw (message for the same module, then the problem is a hidden import.) Tj T* ET Q Q q 1 0 0 1 62.69291 351.0236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 8.6 cm q .5 w .662745 .662745 .662745 RG .960784 .960784 .862745 rg n 0 0 400.8898 86 re B* Q q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 62.6 cm q 0 0 0 rg BT 1 0 0 1 0 2.5 Tm /F3 12.5 Tf 15 TL (Standard hidden imports are already included!) Tj T* ET Q Q Q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 8.6 cm q BT 1 0 0 1 0 38 Tm 1.31152 Tw 12 TL /F1 10 Tf 0 0 0 rg (If you are getting worried while reading this paragraph, do not worry: having hidden) Tj T* 0 Tw 1.099213 Tw (imports is the exception, not the norm! And anyway, PyInstaller already ships with a) Tj T* 0 Tw .209984 Tw (large set of hooks that take care of hidden imports for the most common packages out) Tj T* 0 Tw (there. For instance, ) Tj 0 0 .501961 rg (PIL) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (PyWin32) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (PyQt ) Tj 0 0 0 rg (are already taken care of.) Tj T* ET Q Q Q Q Q Q Q Q q 1 0 0 1 62.69291 321.0236 cm q BT 1 0 0 1 0 14 Tm 1.564651 Tw 12 TL /F1 10 Tf 0 0 0 rg (Hidden imports are handled by hooking the module \(the one doing the hidden imports\) at ) Tj /F4 10 Tf (Analysis) Tj T* 0 Tw /F1 10 Tf (time. Do this as follows:) Tj T* ET Q Q q 1 0 0 1 62.69291 315.0236 cm Q q 1 0 0 1 62.69291 209.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 99.2 cm Q q 1 0 0 1 20 99.2 cm Q q 1 0 0 1 20 63.2 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 21 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 26 Tm .979147 Tw 12 TL /F1 10 Tf 0 0 0 rg (Create a file named ) Tj /F4 10 Tf (hook-module.py ) Tj /F1 10 Tf (\(where ) Tj /F5 10 Tf (module ) Tj /F1 10 Tf (is the fully-qualified Python name, eg,) Tj T* 0 Tw 2.635433 Tw /F4 10 Tf (hook-xml.dom.py) Tj /F1 10 Tf (\) and place it somewhere. Remember the place as ) Tj /F5 10 Tf (your private hooks) Tj T* 0 Tw (directory) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 57.2 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 42.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 30.2 cm q BT 1 0 0 1 0 14 Tm .752126 Tw 12 TL /F1 10 Tf 0 0 0 rg (In the .spec file, pass ) Tj /F5 10 Tf (your private hooks directory ) Tj /F1 10 Tf (as ) Tj /F4 10 Tf (hookspath ) Tj /F1 10 Tf (argument to ) Tj /F4 10 Tf (Analysis ) Tj /F1 10 Tf (so) Tj T* 0 Tw (will be searched. Example:) Tj T* ET Q Q q 1 0 0 1 23 -3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 425.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (a = Analysis\(['myscript.py'], hookspath='/my/priv/hooks'\)) Tj T* ET Q Q Q Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 62.69291 209.8236 cm Q q 1 0 0 1 62.69291 191.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (In most cases the hook module will have only one line:) Tj T* ET Q Q q 1 0 0 1 62.69291 158.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (hiddenimports = ['module1', 'module2']) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 126.6236 cm q BT 1 0 0 1 0 14 Tm 2.271318 Tw 12 TL /F1 10 Tf 0 0 0 rg (When the ) Tj /F4 10 Tf (Analysis ) Tj /F1 10 Tf (finds this file, it will proceed exactly as though the module explicitly imported) Tj T* 0 Tw /F4 10 Tf (module1 ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (module2) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 96.62362 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.340542 Tw (If you successfully hook a publicly distributed module in this way, please send us the hook so we can) Tj T* 0 Tw (make it available to others.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 145.6349 0 Td (PyInstaller Manual - Listing Hidden Imports) Tj T* -145.6349 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (20) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R352': class PDFStream 352 0 obj % page stream << /Length 6981 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 729.0236 cm q BT 1 0 0 1 0 14 Tm 1.632651 Tw 12 TL /F1 10 Tf 0 0 0 rg (You may want to have a look at already existing hooks in the ) Tj /F4 10 Tf (PyInstaller.hooks ) Tj /F1 10 Tf (package under) Tj T* 0 Tw /F5 10 Tf (PyInstaller) Tj /F1 10 Tf ('s root directory. For full details on the analysis-time hook mechanism is in the ) Tj 0 0 .501961 rg (Hooks ) Tj 0 0 0 rg (section.) Tj T* ET Q Q q 1 0 0 1 62.69291 702.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Extending a Package's ) Tj /F7 12.5 Tf (__path__) Tj T* ET Q Q q 1 0 0 1 62.69291 624.0236 cm q BT 1 0 0 1 0 62 Tm .671235 Tw 12 TL /F1 10 Tf 0 0 0 rg (Python allows a package to extend the search path used to find modules and sub-packages through the) Tj T* 0 Tw .426651 Tw /F4 10 Tf (__path__ ) Tj /F1 10 Tf (mechanism. Normally, a package's ) Tj /F4 10 Tf (__path__ ) Tj /F1 10 Tf (has only one entry - the directory in which the) Tj T* 0 Tw 3.930751 Tw /F4 10 Tf (__init__.py ) Tj /F1 10 Tf (was found. But ) Tj /F4 10 Tf (__init__.py ) Tj /F1 10 Tf (is free to extend its ) Tj /F4 10 Tf (__path__ ) Tj /F1 10 Tf (to include other) Tj T* 0 Tw 11.72497 Tw (directories. For example, the ) Tj /F4 10 Tf (win32com.shell.shell ) Tj /F1 10 Tf (module actually resolves to) Tj T* 0 Tw 2.343953 Tw /F4 10 Tf (win32com/win32comext/shell/shell.pyd) Tj /F1 10 Tf (. This is because ) Tj /F4 10 Tf (win32com/__init__.py ) Tj /F1 10 Tf (appends) Tj T* 0 Tw /F4 10 Tf (../win32comext ) Tj /F1 10 Tf (to its ) Tj /F4 10 Tf (__path__) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 534.0236 cm q BT 1 0 0 1 0 74 Tm .20436 Tw 12 TL /F1 10 Tf 0 0 0 rg (Because the ) Tj /F4 10 Tf (__init__.py ) Tj /F1 10 Tf (is not actually run during an analysis, we use the same hook mechanism we) Tj T* 0 Tw .974692 Tw (use for hidden imports. A static list of names won't do, however, because the new entry on ) Tj /F4 10 Tf (__path__) Tj T* 0 Tw 1.960814 Tw /F1 10 Tf (may well require computation. So ) Tj /F4 10 Tf (hook-module.py ) Tj /F1 10 Tf (should define a method ) Tj /F4 10 Tf (hook\(mod\)) Tj /F1 10 Tf (. The mod) Tj T* 0 Tw .964692 Tw (argument is an instance of ) Tj /F4 10 Tf (mf.Module ) Tj /F1 10 Tf (which has \(more or less\) the same attributes as a real module) Tj T* 0 Tw 1.33436 Tw (object. The hook function should return a ) Tj /F4 10 Tf (mf.Module ) Tj /F1 10 Tf (instance - perhaps a brand new one, but more) Tj T* 0 Tw .20881 Tw (likely the same one used as an arg, but mutated. See ) Tj 0 0 .501961 rg (mf.py: A Modulefinder Replacement ) Tj 0 0 0 rg (for details, and) Tj T* 0 Tw 0 0 .501961 rg (PyInstaller/hooks/hook-win32com.py ) Tj 0 0 0 rg (for an example.) Tj T* ET Q Q q 1 0 0 1 62.69291 492.0236 cm q BT 1 0 0 1 0 26 Tm 1.223735 Tw 12 TL /F1 10 Tf 0 0 0 rg (Note that manipulations of ) Tj /F4 10 Tf (__path__ ) Tj /F1 10 Tf (hooked in this way apply to the analysis, and only the analysis.) Tj T* 0 Tw 1.70498 Tw (That is, at runtime ) Tj /F4 10 Tf (win32com.shell ) Tj /F1 10 Tf (is resolved the same way as ) Tj /F4 10 Tf (win32com.anythingelse) Tj /F1 10 Tf (, and) Tj T* 0 Tw /F4 10 Tf (win32com.__path__ ) Tj /F1 10 Tf (knows nothing of ) Tj /F4 10 Tf (../win32comext) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 474.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Once in awhile, that's not enough.) Tj T* ET Q Q q 1 0 0 1 62.69291 447.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Changing Runtime Behavior) Tj T* ET Q Q q 1 0 0 1 62.69291 417.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .534983 Tw (More bizarre situations can be accomodated with runtime hooks. These are small scripts that manipulate) Tj T* 0 Tw (the environment before your main script runs, effectively providing additional top-level code to your script.) Tj T* ET Q Q q 1 0 0 1 62.69291 375.0236 cm q BT 1 0 0 1 0 26 Tm .323735 Tw 12 TL /F1 10 Tf 0 0 0 rg (At the tail end of an analysis, the module list is examined for matches in ) Tj /F4 10 Tf (support/rthooks.dat) Tj /F1 10 Tf (, which) Tj T* 0 Tw .594488 Tw (is the string representation of a Python dictionary. The key is the module name, and the value is a list of) Tj T* 0 Tw (hook-script pathnames.) Tj T* ET Q Q q 1 0 0 1 62.69291 357.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (So putting an entry:) Tj T* ET Q Q q 1 0 0 1 62.69291 323.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL ('somemodule': ['path/to/somescript.py'],) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 303.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (into ) Tj /F4 10 Tf (support/rthooks.dat ) Tj /F1 10 Tf (is almost the same thing as doing this:) Tj T* ET Q Q q 1 0 0 1 62.69291 270.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (anal = Analysis\(['path/to/somescript.py', 'main.py'], ...) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 238.6236 cm q BT 1 0 0 1 0 14 Tm .29311 Tw 12 TL /F1 10 Tf 0 0 0 rg (except that in using the hook, ) Tj /F4 10 Tf (path/to/somescript.py ) Tj /F1 10 Tf (will not be analyzed, \(that's not a feature - we) Tj T* 0 Tw (just haven't found a sane way fit the recursion into my persistence scheme\).) Tj T* ET Q Q q 1 0 0 1 62.69291 196.6236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .316488 Tw (Hooks done in this way, while they need to be careful of what they import, are free to do almost anything.) Tj T* 0 Tw .829986 Tw (One provided hook sets things up so that win32com can generate modules at runtime \(to disk\), and the) Tj T* 0 Tw (generated modules can be found in the win32com package.) Tj T* ET Q Q q 1 0 0 1 62.69291 169.6236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Adapting to being "frozen") Tj T* ET Q Q q 1 0 0 1 62.69291 115.6236 cm q BT 1 0 0 1 0 38 Tm .712651 Tw 12 TL /F1 10 Tf 0 0 0 rg (In most sophisticated apps, it becomes necessary to figure out \(at runtime\) whether you're running "live") Tj T* 0 Tw 1.00881 Tw (or "frozen". For example, you might have a configuration file that \(running "live"\) you locate based on a) Tj T* 0 Tw 1.367984 Tw (module's ) Tj /F4 10 Tf (__file__ ) Tj /F1 10 Tf (attribute. That won't work once the code is packaged up. You'll probably want to) Tj T* 0 Tw (look for it based on ) Tj /F4 10 Tf (sys.executable ) Tj /F1 10 Tf (instead.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 122.4299 0 Td (PyInstaller Manual - Extending a Package's __path__) Tj T* -122.4299 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (21) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R353': class PDFStream 353 0 obj % page stream << /Length 9234 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 729.0236 cm q BT 1 0 0 1 0 14 Tm 3.24748 Tw 12 TL /F1 10 Tf 0 0 0 rg (The bootloaders set ) Tj /F4 10 Tf (sys.frozen=1 ) Tj /F1 10 Tf (\(and, for in-process COM servers, the embedding DLL sets) Tj T* 0 Tw /F4 10 Tf (sys.frozen='dll') Tj /F1 10 Tf (\).) Tj T* ET Q Q q 1 0 0 1 62.69291 699.0236 cm q BT 1 0 0 1 0 14 Tm 1.83816 Tw 12 TL /F1 10 Tf 0 0 0 rg (For really advanced users, you can access the ) Tj /F4 10 Tf (iu.ImportManager ) Tj /F1 10 Tf (as ) Tj /F4 10 Tf (sys.importManager) Tj /F1 10 Tf (. See) Tj T* 0 Tw 0 0 .501961 rg (iu.py ) Tj 0 0 0 rg (for how you might make use of this fact.) Tj T* ET Q Q q 1 0 0 1 62.69291 666.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Miscellaneous) Tj T* ET Q Q q 1 0 0 1 62.69291 636.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Self-extracting executables) Tj T* ET Q Q q 1 0 0 1 62.69291 582.0236 cm q BT 1 0 0 1 0 38 Tm .089984 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ELF executable format \(Windows, Linux and some others\) allows arbitrary data to be concatenated to) Tj T* 0 Tw 1.911318 Tw (the end of the executable without disturbing its functionality. For this reason, a ) Tj /F4 10 Tf (CArchive) Tj /F1 10 Tf ('s Table of) Tj T* 0 Tw .954488 Tw (Contents is at the end of the archive. The executable can open itself as a binary file name, seek to the) Tj T* 0 Tw (end and 'open' the ) Tj /F4 10 Tf (CArchive ) Tj /F1 10 Tf (\(see figure 3\).) Tj T* ET Q Q q 1 0 0 1 62.69291 552.0236 cm q BT 1 0 0 1 0 14 Tm 5.136412 Tw 12 TL /F1 10 Tf 0 0 0 rg (On other platforms, the archive and the executable are separate, but the archive is named) Tj T* 0 Tw /F4 10 Tf (executable.pkg) Tj /F1 10 Tf (, and expected to be in the same directory. Other than that, the process is the same.) Tj T* ET Q Q q 1 0 0 1 62.69291 525.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (One Pass Execution) Tj T* ET Q Q q 1 0 0 1 62.69291 495.0236 cm q BT 1 0 0 1 0 14 Tm .21832 Tw 12 TL /F1 10 Tf 0 0 0 rg (In a single directory deployment \() Tj /F4 10 Tf (--onedir) Tj /F1 10 Tf (, which is the default\), all of the binaries are already in the file) Tj T* 0 Tw (system. In that case, the embedding app:) Tj T* ET Q Q q 1 0 0 1 62.69291 489.0236 cm Q q 1 0 0 1 62.69291 489.0236 cm Q q 1 0 0 1 62.69291 477.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (opens the archive) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 471.0236 cm Q q 1 0 0 1 62.69291 447.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .55686 Tw (starts Python \(on Windows, this is done with dynamic loading so one embedding app binary can be) Tj T* 0 Tw (used with any Python version\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 441.0236 cm Q q 1 0 0 1 62.69291 417.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.496235 Tw (imports all the modules which are at the top level of the archive \(basically, bootstraps the import) Tj T* 0 Tw (hooks\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 411.0236 cm Q q 1 0 0 1 62.69291 399.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (mounts the ) Tj /F4 10 Tf (ZlibArchive\(s\) ) Tj /F1 10 Tf (in the outer archive) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 393.0236 cm Q q 1 0 0 1 62.69291 381.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (runs all the scripts which are at the top level of the archive) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 375.0236 cm Q q 1 0 0 1 62.69291 363.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (finalizes Python) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 363.0236 cm Q q 1 0 0 1 62.69291 336.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Two Pass Execution) Tj T* ET Q Q q 1 0 0 1 62.69291 318.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (There are a couple situations which require two passes:) Tj T* ET Q Q q 1 0 0 1 62.69291 312.0236 cm Q q 1 0 0 1 62.69291 312.0236 cm Q q 1 0 0 1 62.69291 276.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 21 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 26 Tm 1.009982 Tw 12 TL /F1 10 Tf 0 0 0 rg (a ) Tj /F4 10 Tf (--onefile ) Tj /F1 10 Tf (deployment \(on Windows, the files can't be cleaned up afterwards because Python) Tj T* 0 Tw 1.199984 Tw (does not call ) Tj /F4 10 Tf (FreeLibrary) Tj /F1 10 Tf (; on other platforms, Python won't find them if they're extracted in the) Tj T* 0 Tw (same process that uses them\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 270.0236 cm Q q 1 0 0 1 62.69291 246.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm 1.312126 Tw 12 TL /F4 10 Tf 0 0 0 rg (LD_LIBRARY_PATH ) Tj /F1 10 Tf (needs to be set to find the binaries \(not extension modules, but modules the) Tj T* 0 Tw (extensions are linked to\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 246.0236 cm Q q 1 0 0 1 62.69291 228.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The first pass:) Tj T* ET Q Q q 1 0 0 1 62.69291 222.0236 cm Q q 1 0 0 1 62.69291 222.0236 cm Q q 1 0 0 1 62.69291 210.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (opens the archive) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 204.0236 cm Q q 1 0 0 1 62.69291 192.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (extracts all the binaries in the archive \(in PyInstaller 2.0, this is always to a temporary directory\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 187.8661 cm Q q 1 0 0 1 62.69291 175.8661 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (sets a magic environment variable) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 169.8661 cm Q q 1 0 0 1 62.69291 157.8661 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (sets ) Tj /F4 10 Tf (LD_LIBRARY_PATH ) Tj /F1 10 Tf (\(non-Windows\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 151.8661 cm Q q 1 0 0 1 62.69291 139.8661 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (executes itself as a child process \(letting the child use his stdin, stdout and stderr\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 133.8661 cm Q q 1 0 0 1 62.69291 121.8661 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (waits for the child to exit \(on *nix, the child actually replaces the parent\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 115.8661 cm Q q 1 0 0 1 62.69291 103.8661 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (cleans up the extracted binaries \(so on *nix, this is done by the child\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 103.8661 cm Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 163.6999 0 Td (PyInstaller Manual - Miscellaneous) Tj T* -163.6999 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (22) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R354': class PDFStream 354 0 obj % page stream << /Length 7265 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 729.0236 cm q BT 1 0 0 1 0 14 Tm .119985 Tw 12 TL /F1 10 Tf 0 0 0 rg (The child process executes as in ) Tj 0 0 .501961 rg (One Pass Execution ) Tj 0 0 0 rg (above \(the magic environment variable is what tells) Tj T* 0 Tw (it that this is pass two\).) Tj T* ET Q Q q 1 0 0 1 62.69291 711.0236 cm q q 225.6 0 0 312.96 0 0 cm /FormXob.e426aed04efc58a2635ba06dfa966651 Do Q BT 1 0 0 1 0 2 Tm 12 TL 225.6 0 Td /F1 10 Tf 0 0 0 rg (figure 3 - Self Extracting Executable) Tj T* -225.6 0 Td ET Q Q q 1 0 0 1 62.69291 657.0236 cm q BT 1 0 0 1 0 38 Tm .942651 Tw 12 TL /F1 10 Tf 0 0 0 rg (There are, of course, quite a few differences between the Windows and Unix/Linux versions. The major) Tj T* 0 Tw 3.26061 Tw (one is that because all of Python on Windows is in ) Tj /F4 10 Tf (pythonXX.dll) Tj /F1 10 Tf (, and dynamic loading is so) Tj T* 0 Tw .34686 Tw (simple-minded, that one binary can be use with any version of Python. There's much in common, though,) Tj T* 0 Tw (and that C code can be found in ) Tj 0 0 .501961 rg (source/common/launch.c) Tj 0 0 0 rg (.) Tj T* ET Q Q q 1 0 0 1 62.69291 615.0236 cm q BT 1 0 0 1 0 26 Tm .877765 Tw 12 TL /F1 10 Tf 0 0 0 rg (The Unix/Linux build process \(which you need to run just once for any version of Python\) makes use of) Tj T* 0 Tw .461984 Tw (the config information in your install \(if you installed from RPM, you need the Python-development RPM\).) Tj T* 0 Tw (It also overrides ) Tj /F4 10 Tf (getpath.c ) Tj /F1 10 Tf (since we don't want it hunting around the filesystem to build ) Tj /F4 10 Tf (sys.path) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 585.0236 cm q BT 1 0 0 1 0 14 Tm 1.155868 Tw 12 TL /F1 10 Tf 0 0 0 rg (In both cases, while one ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (download can be used with any Python version, you need to have) Tj T* 0 Tw (separate installations for each Python version.) Tj T* ET Q Q q 1 0 0 1 62.69291 552.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (PyInstaller Archives) Tj T* ET Q Q q 1 0 0 1 62.69291 522.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Archives Introduction) Tj T* ET Q Q q 1 0 0 1 62.69291 444.0236 cm q BT 1 0 0 1 0 62 Tm .19856 Tw 12 TL /F1 10 Tf 0 0 0 rg (You know what an archive is: a ) Tj /F4 10 Tf (.tar ) Tj /F1 10 Tf (file, a ) Tj /F4 10 Tf (.jar ) Tj /F1 10 Tf (file, a ) Tj /F4 10 Tf (.zip ) Tj /F1 10 Tf (file. Two kinds of archives are used here.) Tj T* 0 Tw .598409 Tw (One is equivalent to a Java ) Tj /F4 10 Tf (.jar ) Tj /F1 10 Tf (file - it allows Python modules to be stored efficiently and, \(with some) Tj T* 0 Tw 1.977318 Tw (import hooks\) imported directly. This is a ) Tj /F4 10 Tf (ZlibArchive) Tj /F1 10 Tf (. The other \(a ) Tj /F4 10 Tf (CArchive) Tj /F1 10 Tf (\) is equivalent to a) Tj T* 0 Tw 1.181098 Tw /F4 10 Tf (.zip ) Tj /F1 10 Tf (file - a general way of packing up \(and optionally compressing\) arbitrary blobs of data. It gets its) Tj T* 0 Tw .372988 Tw (name from the fact that it can be manipulated easily from C, as well as from Python. Both of these derive) Tj T* 0 Tw (from a common base class, making it fairly easy to create new kinds of archives.) Tj T* ET Q Q q 1 0 0 1 62.69291 414.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F6 15 Tf 0 0 0 rg (ZlibArchive) Tj T* ET Q Q q 1 0 0 1 62.69291 372.0236 cm q BT 1 0 0 1 0 26 Tm 1.69784 Tw 12 TL /F1 10 Tf 0 0 0 rg (A ) Tj /F4 10 Tf (ZlibArchive ) Tj /F1 10 Tf (contains compressed ) Tj /F4 10 Tf (.pyc ) Tj /F1 10 Tf (\(or ) Tj /F4 10 Tf (.pyo) Tj /F1 10 Tf (\) files. The Table of Contents is a marshalled) Tj T* 0 Tw 1.161235 Tw (dictionary, with the key \(the module's name as given in an ) Tj /F4 10 Tf (import ) Tj /F1 10 Tf (statement\) associated with a seek) Tj T* 0 Tw (position and length. Because it is all marshalled Python, ) Tj /F4 10 Tf (ZlibArchives ) Tj /F1 10 Tf (are completely cross-platform.) Tj T* ET Q Q q 1 0 0 1 62.69291 282.0236 cm q BT 1 0 0 1 0 74 Tm 1.139986 Tw 12 TL /F1 10 Tf 0 0 0 rg (A ) Tj /F4 10 Tf (ZlibArchive ) Tj /F1 10 Tf (hooks in with ) Tj 0 0 .501961 rg (iu.py ) Tj 0 0 0 rg (so that, with a little setup, the archived modules can be imported) Tj T* 0 Tw 1.404985 Tw (transparently. Even with compression at level 9, this works out to being faster than the normal import.) Tj T* 0 Tw .82561 Tw (Instead of searching ) Tj /F4 10 Tf (sys.path) Tj /F1 10 Tf (, there's a lookup in the dictionary. There's no ) Tj /F4 10 Tf (stat) Tj /F1 10 Tf (-ing of the ) Tj /F4 10 Tf (.py ) Tj /F1 10 Tf (and) Tj T* 0 Tw 1.953145 Tw /F4 10 Tf (.pyc ) Tj /F1 10 Tf (and no file opens \(the file is already open\). There's just a seek, a read and a decompress. A) Tj T* 0 Tw .042339 Tw (traceback will point to the source file the archive entry was created from \(the ) Tj /F4 10 Tf (__file__ ) Tj /F1 10 Tf (attribute from the) Tj T* 0 Tw .96683 Tw (time the ) Tj /F4 10 Tf (.pyc ) Tj /F1 10 Tf (was compiled\). On a user's box with no source installed, this is not terribly useful, but if) Tj T* 0 Tw (they send you the traceback, at least you can make sense of it.) Tj T* ET Q Q q 1 0 0 1 62.69291 264.0236 cm q q 314.88 0 0 312.96 0 0 cm /FormXob.b0457f0a414020c0d759fda1eca85a59 Do Q BT 1 0 0 1 0 2 Tm 12 TL 314.88 0 Td /F1 10 Tf 12 TL T* -314.88 0 Td ET Q Q q 1 0 0 1 62.69291 234.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F6 15 Tf 0 0 0 rg (CArchive) Tj T* ET Q Q q 1 0 0 1 62.69291 168.0236 cm q BT 1 0 0 1 0 50 Tm .245988 Tw 12 TL /F1 10 Tf 0 0 0 rg (A ) Tj /F4 10 Tf (CArchive ) Tj /F1 10 Tf (contains whatever you want to stuff into it. It's very much like a ) Tj /F4 10 Tf (.zip ) Tj /F1 10 Tf (file. They are easy to) Tj T* 0 Tw 1.419398 Tw (create in Python and unpack from C code. ) Tj /F4 10 Tf (CArchives ) Tj /F1 10 Tf (can be appended to other files \(like ELF and) Tj T* 0 Tw 2.819398 Tw (COFF executables, for example\). To allow this, they are opened from the end, so the ) Tj /F4 10 Tf (TOC ) Tj /F1 10 Tf (for a) Tj T* 0 Tw 1.077882 Tw /F4 10 Tf (CArchive ) Tj /F1 10 Tf (is at the back, followed only by a cookie that tells you where the ) Tj /F4 10 Tf (TOC ) Tj /F1 10 Tf (starts and where the) Tj T* 0 Tw (archive itself starts.) Tj T* ET Q Q q 1 0 0 1 62.69291 138.0236 cm q BT 1 0 0 1 0 14 Tm .817318 Tw 12 TL /F4 10 Tf 0 0 0 rg (CArchives ) Tj /F1 10 Tf (can also be embedded within other ) Tj /F4 10 Tf (CArchives) Tj /F1 10 Tf (. The inner archive can be opened in place) Tj T* 0 Tw (\(without extraction\).) Tj T* ET Q Q q 1 0 0 1 62.69291 96.02362 cm q BT 1 0 0 1 0 26 Tm .190941 Tw 12 TL /F1 10 Tf 0 0 0 rg (Each ) Tj /F4 10 Tf (TOC ) Tj /F1 10 Tf (entry is variable length. The first field in the entry tells you the length of the entry. The last field) Tj T* 0 Tw 1.196235 Tw (is the name of the corresponding packed file. The name is null terminated. Compression is optional by) Tj T* 0 Tw (member.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 151.4749 0 Td (PyInstaller Manual - PyInstaller Archives) Tj T* -151.4749 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (23) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R355': class PDFStream 355 0 obj % page stream << /Length 6348 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 729.0236 cm q BT 1 0 0 1 0 14 Tm .989461 Tw 12 TL /F1 10 Tf 0 0 0 rg (There is also a type code associated with each entry. If you're using a ) Tj /F4 10 Tf (CArchive ) Tj /F1 10 Tf (as a ) Tj /F4 10 Tf (.zip ) Tj /F1 10 Tf (file, you) Tj T* 0 Tw (don't need to worry about this. The type codes are used by the self-extracting executables.) Tj T* ET Q Q q 1 0 0 1 62.69291 711.0236 cm q q 288 0 0 312.96 0 0 cm /FormXob.0fb62db63e29f7a22c3f1467db7a707b Do Q BT 1 0 0 1 0 2 Tm 12 TL 288 0 Td /F1 10 Tf 12 TL T* -288 0 Td ET Q Q q 1 0 0 1 62.69291 678.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (License) Tj T* ET Q Q q 1 0 0 1 62.69291 648.0236 cm q BT 1 0 0 1 0 14 Tm .303672 Tw 12 TL /F1 10 Tf 0 0 0 rg (PyInstaller is mainly distributed under the ) Tj 0 0 .501961 rg (GPL License ) Tj 0 0 0 rg (but it has an exception such that you can use it to) Tj T* 0 Tw (compile commercial products.) Tj T* ET Q Q q 1 0 0 1 62.69291 630.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (In a nutshell, the license is GPL for the source code with the exception that:) Tj T* ET Q Q q 1 0 0 1 62.69291 624.0236 cm Q q 1 0 0 1 62.69291 534.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 84 cm Q q 1 0 0 1 20 84 cm Q q 1 0 0 1 20 72 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You may use PyInstaller to compile commercial applications out of your source code.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 66 cm Q q 1 0 0 1 20 42 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 2.097674 Tw (The resulting binaries generated by PyInstaller from your source code can be shipped with) Tj T* 0 Tw (whatever license you want.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 36 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 21 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (3.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 26 Tm 1.669269 Tw 12 TL /F1 10 Tf 0 0 0 rg (You may modify PyInstaller for your own needs but ) Tj /F5 10 Tf (these ) Tj /F1 10 Tf (changes to the PyInstaller source) Tj T* 0 Tw .721163 Tw (code falls under the terms of the GPL license. In other words, any modifications to will ) Tj /F5 10 Tf (have ) Tj /F1 10 Tf (to) Tj T* 0 Tw (be distributed under GPL.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 62.69291 534.0236 cm Q q 1 0 0 1 62.69291 516.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (For updated information or clarification see our ) Tj 0 0 .501961 rg (FAQ ) Tj 0 0 0 rg (at ) Tj 0 0 .501961 rg (PyInstaller ) Tj 0 0 0 rg (home page.) Tj T* ET Q Q q 1 0 0 1 62.69291 483.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Appendix) Tj T* ET Q Q q 1 0 0 1 62.69291 385.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 8.6 cm q .5 w .662745 .662745 .662745 RG .960784 .960784 .862745 rg n 0 0 400.8898 74 re B* Q q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 50.6 cm q 0 0 0 rg BT 1 0 0 1 0 2.5 Tm /F3 12.5 Tf 15 TL (You can stop reading here...) Tj T* ET Q Q Q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 8.6 cm q BT 1 0 0 1 0 26 Tm .819983 Tw 12 TL /F1 10 Tf 0 0 0 rg (... if you are not interested in technical details. This appendix contains insights of the) Tj T* 0 Tw .669982 Tw (internal workings of ) Tj /F5 10 Tf (PyInstaller) Tj /F1 10 Tf (, and you do not need this information unless you plan) Tj T* 0 Tw (to work on ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (itself.) Tj T* ET Q Q Q Q Q Q Q Q q 1 0 0 1 62.69291 355.6236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Building the bootloaders) Tj T* ET Q Q q 1 0 0 1 62.69291 301.6236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL 16.82664 Tw (PyInstaller comes with binary bootloaders for most platforms, shipped in) Tj T* 0 Tw 1.036647 Tw (/your/path/to/pyinstaller//support/loader. If you need to build the bootloader for your own platform \(either) Tj T* 0 Tw .395697 Tw (because your platform is not officially supported, or because you tweaked bootloader's source code\), you) Tj T* 0 Tw (can follow this guide.) Tj T* ET Q Q q 1 0 0 1 62.69291 274.6236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Development tools) Tj T* ET Q Q q 1 0 0 1 62.69291 256.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (On Debian/Ubuntu systems, you can run the following lines to install everything required:) Tj T* ET Q Q q 1 0 0 1 62.69291 223.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (sudo apt-get install build-essential python-dev) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 203.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (On Fedora/RHEL and derivates, you can run the following lines:) Tj T* ET Q Q q 1 0 0 1 62.69291 146.2236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (su) Tj T* (yum groupinstall "Development Tools") Tj T* (yum install python-devel) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 102.2236 cm q BT 1 0 0 1 0 26 Tm .060898 Tw 12 TL /F1 10 Tf 0 0 0 rg (On Mac OS X you can get gcc by installing ) Tj 0 0 .501961 rg (Xcode) Tj 0 0 0 rg (. It is a suite of tools for developing software for Mac OS) Tj T* 0 Tw .251894 Tw (X. It can be also installed from your ) Tj /F4 10 Tf (Mac OS X Install DVD) Tj /F1 10 Tf (. It is not necessary to install the version 4) Tj T* 0 Tw (of Xcode.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 178.1449 0 Td (PyInstaller Manual - License) Tj T* -178.1449 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (24) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R356': class PDFStream 356 0 obj % page stream << /Length 6869 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 741.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (On Solaris and AIX the bootloader is tested with gcc.) Tj T* ET Q Q q 1 0 0 1 62.69291 711.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.353984 Tw (On Windows you can use MinGW \(gcc for Windows\) and Visual Studio C++ \(msvc\) compilers. Python) Tj T* 0 Tw (development libraries are usually installed together with Python.) Tj T* ET Q Q q 1 0 0 1 62.69291 657.0236 cm q BT 1 0 0 1 0 38 Tm .235318 Tw 12 TL /F5 10 Tf 0 0 0 rg (Note: ) Tj /F1 10 Tf (There is no interdependence between the Visual Studio version used to compile the bootloader and) Tj T* 0 Tw 1.206412 Tw (the Visual Studio version used to compile Python. The bootloader is a self-contained static executable,) Tj T* 0 Tw .012209 Tw (that imposes no restrictions on the version of Python being used. So you can simply use any Visual Studio) Tj T* 0 Tw (version you have around.) Tj T* ET Q Q q 1 0 0 1 62.69291 639.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You can download and install or unpack MinGW distribution from one of the following locations:) Tj T* ET Q Q q 1 0 0 1 62.69291 633.0236 cm Q q 1 0 0 1 62.69291 633.0236 cm Q q 1 0 0 1 62.69291 621.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (MinGW ) Tj 0 0 0 rg (- stable and mature, uses gcc 3.4 as its base) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 615.0236 cm Q q 1 0 0 1 62.69291 603.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (MinGW-w64 ) Tj 0 0 0 rg (- more recent, uses gcc 4.4 and up.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 597.0236 cm Q q 1 0 0 1 62.69291 585.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (TDM-GCC ) Tj 0 0 0 rg (- MinGW and MinGW-w64 installers) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 585.0236 cm Q q 1 0 0 1 62.69291 558.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Building) Tj T* ET Q Q q 1 0 0 1 62.69291 528.0236 cm q BT 1 0 0 1 0 14 Tm 2.02284 Tw 12 TL /F1 10 Tf 0 0 0 rg (On Windows, when using MinGW, it is needed to add ) Tj /F4 10 Tf (PATH_TO_MINGW\\bin ) Tj /F1 10 Tf (to your system ) Tj /F4 10 Tf (PATH) Tj /F1 10 Tf (.) Tj T* 0 Tw (variable. In command prompt before building bootloader run for example:) Tj T* ET Q Q q 1 0 0 1 62.69291 494.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (set PATH=C:\\MinGW\\bin;%PATH%) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 474.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Change to the /your/path/to/pyinstaller/ ) Tj /F4 10 Tf (source ) Tj /F1 10 Tf (subdirectory. Run:) Tj T* ET Q Q q 1 0 0 1 62.69291 429.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (pyinstaller$ cd source) Tj T* (pyinstaller/source$ python waf configure build install) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 385.6236 cm q BT 1 0 0 1 0 26 Tm 15.07744 Tw 12 TL /F1 10 Tf 0 0 0 rg (This will produce ) Tj /F4 10 Tf (support/loader/YOUR_OS/run) Tj /F1 10 Tf (, ) Tj /F4 10 Tf (support/loader/YOUR_OS/run_d) Tj /F1 10 Tf (,) Tj T* 0 Tw 9.323953 Tw /F4 10 Tf (support/loader/YOUR_OS/runw ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (support/loader/YOUR_OS/runw_d) Tj /F1 10 Tf (, which are the) Tj T* 0 Tw (bootloaders.) Tj T* ET Q Q q 1 0 0 1 62.69291 355.6236 cm q BT 1 0 0 1 0 14 Tm .759069 Tw 12 TL /F1 10 Tf 0 0 0 rg (On Windows this will produce in the ) Tj /F4 10 Tf (support/loader/YOUR_OS ) Tj /F1 10 Tf (directory: ) Tj /F4 10 Tf (run*.exe ) Tj /F1 10 Tf (\(bootloader for) Tj T* 0 Tw (regular programs\), and ) Tj /F4 10 Tf (inprocsrvr*.dll ) Tj /F1 10 Tf (\(bootloader for in-process COM servers\).) Tj T* ET Q Q q 1 0 0 1 62.69291 325.6236 cm q BT 1 0 0 1 0 14 Tm 2.815542 Tw 12 TL /F5 10 Tf 0 0 0 rg (Note: ) Tj /F1 10 Tf (If you have multiple versions of Python, the Python you use to run ) Tj /F4 10 Tf (waf ) Tj /F1 10 Tf (is the one whose) Tj T* 0 Tw (configuration is used.) Tj T* ET Q Q q 1 0 0 1 62.69291 307.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F5 10 Tf 0 0 0 rg (Note: ) Tj /F1 10 Tf (On AIX the bootloader builds with gcc and is tested with gcc 4.2.0 on AIX 6.1.) Tj T* ET Q Q q 1 0 0 1 62.69291 280.6236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Linux Standard Base \(LSB\) binary) Tj T* ET Q Q q 1 0 0 1 62.69291 262.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (By default, the bootloaders on Linux are LSB binaries.) Tj T* ET Q Q q 1 0 0 1 62.69291 220.6236 cm q BT 1 0 0 1 0 26 Tm .349318 Tw 12 TL /F1 10 Tf 0 0 0 rg (LSB is a set of open standards that should increase compatibility among Linux distributions. ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (is) Tj T* 0 Tw .095697 Tw (able produce bootloader as LSB binary in order to increase compatibility for packaged applications among) Tj T* 0 Tw (distributions.) Tj T* ET Q Q q 1 0 0 1 62.69291 202.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F5 10 Tf 0 0 0 rg (Note: ) Tj /F1 10 Tf (LSB version 4.0 is required for successfull building of bootloader.) Tj T* ET Q Q q 1 0 0 1 62.69291 172.6236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .499985 Tw (On Debian- and Ubuntu-based distros, you can install LSB 4.0 tools by adding the following repository to) Tj T* 0 Tw (the sources.list file:) Tj T* ET Q Q q 1 0 0 1 62.69291 139.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (deb http://ftp.linux-foundation.org/pub/lsb/repositories/debian lsb-4.0 main) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 119.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (then after having update the apt repository:) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 177.5899 0 Td (PyInstaller Manual - Building) Tj T* -177.5899 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (25) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R357': class PDFStream 357 0 obj % page stream << /Length 6052 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 727.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (sudo apt-get update) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 707.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (you can install LSB 4.0:) Tj T* ET Q Q q 1 0 0 1 62.69291 674.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (sudo apt-get install lsb lsb-build-cc) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 642.6236 cm q BT 1 0 0 1 0 14 Tm 1.056235 Tw 12 TL /F1 10 Tf 0 0 0 rg (Most other distributions contain only LSB 3.0 in their software repositories and thus LSB build tools 4.0) Tj T* 0 Tw (must be downloaded by hand. From Linux Foundation download ) Tj 0 0 .501961 rg (LSB sdk 4.0 ) Tj 0 0 0 rg (for your architecture.) Tj T* ET Q Q q 1 0 0 1 62.69291 624.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Unpack it by:) Tj T* ET Q Q q 1 0 0 1 62.69291 591.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (tar -xvzf lsb-sdk-4.0.3-1.ia32.tar.gz) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 571.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (To install it run:) Tj T* ET Q Q q 1 0 0 1 62.69291 526.2236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (cd lsb-sdk) Tj T* (./install.sh) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 506.2236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (After having installed the LSB tools, you can follow the standard building instructions.) Tj T* ET Q Q q 1 0 0 1 62.69291 476.2236 cm q BT 1 0 0 1 0 14 Tm .275777 Tw 12 TL /F5 10 Tf 0 0 0 rg (NOTE: ) Tj /F1 10 Tf (if for some reason you want to avoid LSB compilation, you can do so by specifying --no-lsb on the) Tj T* 0 Tw (waf command line, as follows:) Tj T* ET Q Q q 1 0 0 1 62.69291 443.0236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (pyinstaller/source$ python waf configure --no-lsb build install) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 399.0236 cm q BT 1 0 0 1 0 26 Tm 7.837953 Tw 12 TL /F1 10 Tf 0 0 0 rg (This will also produce ) Tj /F4 10 Tf (support/loader/YOUR_OS/run) Tj /F1 10 Tf (, ) Tj /F4 10 Tf (support/loader/YOUR_OS/run_d) Tj /F1 10 Tf (,) Tj T* 0 Tw .19872 Tw /F4 10 Tf (support/loader/YOUR_OS/runw ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (support/loader/YOUR_OS/runw_d) Tj /F1 10 Tf (, but they will not be LSB) Tj T* 0 Tw (binaries.) Tj T* ET Q Q q 1 0 0 1 62.69291 369.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F6 15 Tf 0 0 0 rg (mf.py) Tj /F2 15 Tf (: A Modulefinder Replacement) Tj T* ET Q Q q 1 0 0 1 62.69291 351.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Module ) Tj /F4 10 Tf (mf ) Tj /F1 10 Tf (is modelled after ) Tj /F4 10 Tf (iu) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 321.0236 cm q BT 1 0 0 1 0 14 Tm .14186 Tw 12 TL /F1 10 Tf 0 0 0 rg (It also uses ) Tj /F4 10 Tf (ImportDirectors ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (Owners ) Tj /F1 10 Tf (to partition the import name space. Except for the fact that) Tj T* 0 Tw (these return ) Tj /F4 10 Tf (Module ) Tj /F1 10 Tf (instances instead of real module objects, they are identical.) Tj T* ET Q Q q 1 0 0 1 62.69291 303.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Instead of an ) Tj /F4 10 Tf (ImportManager) Tj /F1 10 Tf (, ) Tj /F4 10 Tf (mf ) Tj /F1 10 Tf (has an ) Tj /F4 10 Tf (ImportTracker ) Tj /F1 10 Tf (managing things.) Tj T* ET Q Q q 1 0 0 1 62.69291 276.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (ImportTracker) Tj T* ET Q Q q 1 0 0 1 62.69291 198.0236 cm q BT 1 0 0 1 0 62 Tm 4.364418 Tw 12 TL /F4 10 Tf 0 0 0 rg (ImportTracker ) Tj /F1 10 Tf (can be called in two ways: ) Tj /F4 10 Tf (analyze_one\(name, importername=None\) ) Tj /F1 10 Tf (or) Tj T* 0 Tw 2.787976 Tw /F4 10 Tf (analyze_r\(name, importername=None\)) Tj /F1 10 Tf (. The second method does what modulefinder does - it) Tj T* 0 Tw .247984 Tw (recursively finds all the module names that importing name would cause to appear in ) Tj /F4 10 Tf (sys.modules) Tj /F1 10 Tf (. The) Tj T* 0 Tw 1.015868 Tw (first method is non-recursive. This is useful, because it is the only way of answering the question "Who) Tj T* 0 Tw 1.359985 Tw (imports name?" But since it is somewhat unrealistic \(very few real imports do not involve recursion\), it) Tj T* 0 Tw (deserves some explanation.) Tj T* ET Q Q q 1 0 0 1 62.69291 171.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F7 12.5 Tf 0 0 0 rg (analyze_one\(\)) Tj T* ET Q Q q 1 0 0 1 62.69291 117.0236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL .896457 Tw (When a name is imported, there are structural and dynamic effects. The dynamic effects are due to the) Tj T* 0 Tw .012927 Tw (execution of the top-level code in the module \(or modules\) that get imported. The structural effects have to) Tj T* 0 Tw .483988 Tw (do with whether the import is relative or absolute, and whether the name is a dotted name \(if there are N) Tj T* 0 Tw (dots in the name, then N+1 modules will be imported even without any code running\).) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 115.8999 0 Td (PyInstaller Manual - mf.py: A Modulefinder Replacement) Tj T* -115.8999 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (26) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R358': class PDFStream 358 0 obj % page stream << /Length 6883 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 705.0236 cm q BT 1 0 0 1 0 38 Tm .487674 Tw 12 TL /F1 10 Tf 0 0 0 rg (The analyze_one method determines the structural effects, and defers the dynamic effects. For example,) Tj T* 0 Tw 2.125976 Tw /F4 10 Tf (analyze_one\("B.C", "A"\) ) Tj /F1 10 Tf (could return ) Tj /F4 10 Tf (["B", "B.C"] ) Tj /F1 10 Tf (or ) Tj /F4 10 Tf (["A.B", "A.B.C"] ) Tj /F1 10 Tf (depending on) Tj T* 0 Tw .417485 Tw (whether the import turns out to be relative or absolute. In addition, ImportTracker's modules dict will have) Tj T* 0 Tw (Module instances for them.) Tj T* ET Q Q q 1 0 0 1 62.69291 678.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Module Classes) Tj T* ET Q Q q 1 0 0 1 62.69291 624.0236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL 2.568314 Tw (There are Module subclasses for builtins, extensions, packages and \(normal\) modules. Besides the) Tj T* 0 Tw 2.369982 Tw (normal module object attributes, they have an attribute imports. For packages and normal modules,) Tj T* 0 Tw .187882 Tw (imports is a list populated by scanning the code object \(and therefor, the names in this list may be relative) Tj T* 0 Tw (or absolute names - we don't know until they have been analyzed\).) Tj T* ET Q Q q 1 0 0 1 62.69291 558.0236 cm q BT 1 0 0 1 0 50 Tm 1.087045 Tw 12 TL /F1 10 Tf 0 0 0 rg (The highly astute will notice that there is a hole in ) Tj /F4 10 Tf (analyze_one\(\) ) Tj /F1 10 Tf (here. The first thing that happens) Tj T* 0 Tw .987633 Tw (when ) Tj /F4 10 Tf (B.C ) Tj /F1 10 Tf (is being imported is that ) Tj /F4 10 Tf (B ) Tj /F1 10 Tf (is imported and it's top-level code executed. That top-level code) Tj T* 0 Tw 2.121318 Tw (can do various things so that when the import of ) Tj /F4 10 Tf (B.C ) Tj /F1 10 Tf (finally occurs, something completely different) Tj T* 0 Tw 2.667984 Tw (happens \(from what a structural analysis would predict\). But mf can handle this through it's hooks) Tj T* 0 Tw (mechanism.) Tj T* ET Q Q q 1 0 0 1 62.69291 531.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (code scanning) Tj T* ET Q Q q 1 0 0 1 62.69291 465.0236 cm q BT 1 0 0 1 0 50 Tm .077356 Tw 12 TL /F1 10 Tf 0 0 0 rg (Like modulefinder, ) Tj /F4 10 Tf (mf ) Tj /F1 10 Tf (scans the byte code of a module, looking for imports. In addition, ) Tj /F4 10 Tf (mf ) Tj /F1 10 Tf (will pick out a) Tj T* 0 Tw 2.180542 Tw (module's ) Tj /F4 10 Tf (__all__ ) Tj /F1 10 Tf (attribute, if it is built as a list of constant names. This means that if a package) Tj T* 0 Tw 1.181163 Tw (declares an ) Tj /F4 10 Tf (__all__ ) Tj /F1 10 Tf (list as a list of names, ImportTracker will track those names if asked to analyze) Tj T* 0 Tw .707318 Tw /F4 10 Tf (package.*) Tj /F1 10 Tf (. The code scan also notes the occurance of ) Tj /F4 10 Tf (__import__) Tj /F1 10 Tf (, ) Tj /F4 10 Tf (exec ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (eval) Tj /F1 10 Tf (, and can issue) Tj T* 0 Tw (warnings when they're found.) Tj T* ET Q Q q 1 0 0 1 62.69291 423.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.211567 Tw (The code scanning also keeps track \(as well as it can\) of the context of an import. It recognizes when) Tj T* 0 Tw 1.053318 Tw (imports are found at the top-level, and when they are found inside definitions \(deferred imports\). Within) Tj T* 0 Tw (that, it also tracks whether the import is inside a condition \(conditional imports\).) Tj T* ET Q Q q 1 0 0 1 62.69291 396.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Hooks) Tj T* ET Q Q q 1 0 0 1 62.69291 366.0236 cm q BT 1 0 0 1 0 14 Tm .103555 Tw 12 TL /F1 10 Tf 0 0 0 rg (In modulefinder, scanning the code takes the place of executing the code object. ) Tj /F4 10 Tf (ExtensionModules) Tj /F1 10 Tf (, of) Tj T* 0 Tw (course, don't get scanned, so there need to be a way of recording any imports they do.) Tj T* ET Q Q q 1 0 0 1 62.69291 348.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Please read ) Tj 0 0 .501961 rg (Listing Hidden Imports ) Tj 0 0 0 rg (for more information.) Tj T* ET Q Q q 1 0 0 1 62.69291 306.0236 cm q BT 1 0 0 1 0 26 Tm .486098 Tw 12 TL /F4 10 Tf 0 0 0 rg (mf ) Tj /F1 10 Tf (goes further and allows a module to be hooked \(after it has been scanned, but before analyze_one is) Tj T* 0 Tw .065814 Tw (done with it\). A hook is a module named ) Tj /F4 10 Tf (hook-fully.qualified.name ) Tj /F1 10 Tf (in the ) Tj /F4 10 Tf (PyInstaller.hooks) Tj T* 0 Tw /F1 10 Tf (package.) Tj T* ET Q Q q 1 0 0 1 62.69291 288.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (These modules should have one or more of the following three global names defined:) Tj T* ET Q Q q 1 0 0 1 62.69291 272.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (hiddenimports) Tj T* ET Q Q q 1 0 0 1 62.69291 199.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 59.2 Tm T* ET q 1 0 0 1 20 57.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A list of modules names \(relative or absolute\) the module imports in some untrackable way.) Tj T* ET Q Q q 1 0 0 1 20 45.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This extends the list of modules to be imported which is created by scanning the code.) Tj T* ET Q Q q 1 0 0 1 20 33.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Example:) Tj T* ET Q Q q 1 0 0 1 20 0 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 448.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (hiddenimports = ['_proxy', 'utils', 'defs']) Tj T* ET Q Q Q Q Q q Q Q q 1 0 0 1 62.69291 183.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (datas) Tj T* ET Q Q q 1 0 0 1 62.69291 88.86614 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 81.95748 Tm T* ET q 1 0 0 1 20 67.95748 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.156098 Tw (A list of globs of files or directories to bundle as datafiles. For each glob, a destination directory is) Tj T* 0 Tw (specified.) Tj T* ET Q Q q 1 0 0 1 20 55.95748 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Example:) Tj T* ET Q Q q 1 0 0 1 20 -1.24252 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 442.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (datas = [) Tj T* ( \('/usr/share/icons/education_*.png', 'icons'\),) Tj T* ( \('/usr/share/libsmi/mibs/*', 'mibs'\),) Tj T* ET Q Q Q Q Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 159.8099 0 Td (PyInstaller Manual - Module Classes) Tj T* -159.8099 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (27) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R359': class PDFStream 359 0 obj % page stream << /Length 6893 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 692.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 47.2 Tm T* ET q 1 0 0 1 20 32 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 442.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL ( ]) Tj T* ET Q Q Q Q Q q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 14 Tm .576905 Tw 12 TL /F1 10 Tf 0 0 0 rg (This will copy all iconfiles matching ) Tj /F5 10 Tf (education_*.png ) Tj /F1 10 Tf (into the subdirectory ) Tj /F5 10 Tf (icons ) Tj /F1 10 Tf (and recursively copy) Tj T* 0 Tw (the content of ) Tj /F5 10 Tf (/usr/share/libsmi/mibs ) Tj /F1 10 Tf (into ) Tj /F5 10 Tf (mibs) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 676.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (attrs) Tj T* ET Q Q q 1 0 0 1 62.69291 601.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 62 Tm T* ET q 1 0 0 1 20 60 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (A list of ) Tj /F4 10 Tf (\(name, value\) ) Tj /F1 10 Tf (pairs \(where value is normally meaningless\).) Tj T* ET Q Q q 1 0 0 1 20 36 cm q BT 1 0 0 1 0 14 Tm .644692 Tw 12 TL /F1 10 Tf 0 0 0 rg (This will set the module-attribute ) Tj /F4 10 Tf (name ) Tj /F1 10 Tf (to ) Tj /F4 10 Tf (value ) Tj /F1 10 Tf (for each pait in the list. The value is meaningless) Tj T* 0 Tw (normally, since the modules are not executed.) Tj T* ET Q Q q 1 0 0 1 20 12 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .447318 Tw (This exists mainly so that ImportTracker won't issue spurious warnings when the rightmost node in a) Tj T* 0 Tw (dotted name turns out to be an attribute in a package, instead of a missing submodule.) Tj T* ET Q Q q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Example: See ) Tj /F4 10 Tf (PyInstaller/hooks/hook-xml.dom.ext.py) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 585.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (hook\(mod\)) Tj T* ET Q Q q 1 0 0 1 62.69291 486.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 86 Tm T* ET q 1 0 0 1 20 72 cm q BT 1 0 0 1 0 14 Tm 2.011318 Tw 12 TL /F1 10 Tf 0 0 0 rg (A function expecting a ) Tj /F4 10 Tf (Module ) Tj /F1 10 Tf (instance and returning a ) Tj /F4 10 Tf (Module ) Tj /F1 10 Tf (instance \(so it can modify or) Tj T* 0 Tw (replace\).) Tj T* ET Q Q q 1 0 0 1 20 24 cm q BT 1 0 0 1 0 38 Tm .353555 Tw 12 TL /F1 10 Tf 0 0 0 rg (This exists for things like dynamic modification of a package's ) Tj /F4 10 Tf (__path__ ) Tj /F1 10 Tf (or perverse situations, like) Tj T* 0 Tw 1.602976 Tw /F4 10 Tf (xml.__init__ ) Tj /F1 10 Tf (replacing itself in ) Tj /F4 10 Tf (sys.modules ) Tj /F1 10 Tf (with ) Tj /F4 10 Tf (_xmlplus.__init__) Tj /F1 10 Tf (. \(It takes nine hook) Tj T* 0 Tw .852485 Tw (modules to properly trace through PyXML-using code, and I can't believe that it's any easier for the) Tj T* 0 Tw (poor programmer using that package\).) Tj T* ET Q Q q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 14 Tm .365777 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (hook\(mod\) ) Tj /F1 10 Tf (\(if it exists\) is called before looking at the others - that way it can, for example, test) Tj T* 0 Tw /F4 10 Tf (sys.version ) Tj /F1 10 Tf (and adjust what's in ) Tj /F4 10 Tf (hiddenimports) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 456.8236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Advanced Hook Usage) Tj T* ET Q Q q 1 0 0 1 62.69291 414.8236 cm q BT 1 0 0 1 0 26 Tm 1.154431 Tw 12 TL /F1 10 Tf 0 0 0 rg (Since the hook module is imported like any other module, you can use any Python code we need. For) Tj T* 0 Tw .440697 Tw (example for colletiong additional data or files. See the existing hooks in ) Tj /F4 10 Tf (PyInstaller/hooks ) Tj /F1 10 Tf (for some) Tj T* 0 Tw (examples, esp. the ) Tj /F4 10 Tf (django ) Tj /F1 10 Tf (hooks.) Tj T* ET Q Q q 1 0 0 1 62.69291 387.8236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Warnings) Tj T* ET Q Q q 1 0 0 1 62.69291 333.8236 cm q BT 1 0 0 1 0 38 Tm 2.451647 Tw 12 TL /F4 10 Tf 0 0 0 rg (ImportTracker ) Tj /F1 10 Tf (has a ) Tj /F4 10 Tf (getwarnings\(\) ) Tj /F1 10 Tf (method that returns all the warnings accumulated by the) Tj T* 0 Tw 1.361984 Tw (instance, and by the ) Tj /F4 10 Tf (Module ) Tj /F1 10 Tf (instances in its modules dict. Generally, it is ) Tj /F4 10 Tf (ImportTracker ) Tj /F1 10 Tf (who will) Tj T* 0 Tw .557126 Tw (accumulate the warnings generated during the structural phase, and ) Tj /F4 10 Tf (Modules ) Tj /F1 10 Tf (that will get the warnings) Tj T* 0 Tw (generated during the code scan.) Tj T* ET Q Q q 1 0 0 1 62.69291 303.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.419986 Tw (Note that by using a hook module, you can silence some particularly tiresome warnings, but not all of) Tj T* 0 Tw (them.) Tj T* ET Q Q q 1 0 0 1 62.69291 276.8236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Cross Reference) Tj T* ET Q Q q 1 0 0 1 62.69291 222.8236 cm q BT 1 0 0 1 0 38 Tm .334724 Tw 12 TL /F1 10 Tf 0 0 0 rg (Once a full analysis \(that is, an ) Tj /F4 10 Tf (analyze_r ) Tj /F1 10 Tf (call\) has been done, you can get a cross reference by using) Tj T* 0 Tw .199269 Tw /F4 10 Tf (getxref\(\)) Tj /F1 10 Tf (. This returns a list of tuples. Each tuple is ) Tj /F4 10 Tf (\(modulename, importers\)) Tj /F1 10 Tf (, where importers is) Tj T* 0 Tw .734104 Tw (a list of the \(fully qualified\) names of the modules importing ) Tj /F4 10 Tf (modulename) Tj /F1 10 Tf (. Both the returned list and the) Tj T* 0 Tw (importers list are sorted.) Tj T* ET Q Q q 1 0 0 1 62.69291 195.8236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (mf Usage) Tj T* ET Q Q q 1 0 0 1 62.69291 177.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A simple example follows:) Tj T* ET Q Q q 1 0 0 1 62.69291 171.8236 cm Q q 1 0 0 1 62.69291 88.86614 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 442.6898 72 re B* Q q BT 1 0 0 1 0 50 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( import mf) Tj T* (>) Tj (>) Tj (>) Tj ( a = mf.ImportTracker\(\)) Tj T* (>) Tj (>) Tj (>) Tj ( a.analyze_r\("os"\)) Tj T* (['os', 'sys', 'posixpath', 'nt', 'stat', 'string', 'strop',) Tj T* ('re', 'pcre', 'ntpath', 'dospath', 'macpath', 'win32api',) Tj T* ET Q Q Q Q Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 144.2399 0 Td (PyInstaller Manual - Advanced Hook Usage) Tj T* -144.2399 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (28) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R360': class PDFStream 360 0 obj % page stream << /Length 5308 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 667.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 442.6898 84 re B* Q q BT 1 0 0 1 0 62 Tm 12 TL /F4 10 Tf 0 0 0 rg ('UserDict', 'copy', 'types', 'repr', 'tempfile']) Tj T* (>) Tj (>) Tj (>) Tj ( a.analyze_one\("os"\)) Tj T* (['os']) Tj T* (>) Tj (>) Tj (>) Tj ( a.modules['string'].imports) Tj T* ([\('strop', 0, 0\), \('strop.*', 0, 0\), \('re', 1, 1\)]) Tj T* (>) Tj (>) Tj (>) Tj T* ET Q Q Q Q Q q Q Q q 1 0 0 1 62.69291 667.8236 cm Q q 1 0 0 1 62.69291 649.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The tuples in the imports list are \(name, delayed, conditional\).) Tj T* ET Q Q q 1 0 0 1 62.69291 643.8236 cm Q q 1 0 0 1 62.69291 354.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 448.6898 288 re B* Q q BT 1 0 0 1 0 266 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( for w in a.modules['string'].warnings: print w) Tj T* (...) Tj T* (W: delayed eval hack detected at line 359) Tj T* (W: delayed eval hack detected at line 389) Tj T* (W: delayed eval hack detected at line 418) Tj T* (>) Tj (>) Tj (>) Tj ( for w in a.getwarnings\(\): print w) Tj T* (...) Tj T* (W: no module named pwd \(delayed, conditional import by posixpath\)) Tj T* (W: no module named dos \(conditional import by os\)) Tj T* (W: no module named os2 \(conditional import by os\)) Tj T* (W: no module named posix \(conditional import by os\)) Tj T* (W: no module named mac \(conditional import by os\)) Tj T* (W: no module named MACFS \(delayed, conditional import by tempfile\)) Tj T* (W: no module named macfs \(delayed, conditional import by tempfile\)) Tj T* (W: top-level conditional exec statment detected at line 47) Tj T* ( - os \(C:\\Program Files\\Python\\Lib\\os.py\)) Tj T* (W: delayed eval hack detected at line 359) Tj T* ( - string \(C:\\Program Files\\Python\\Lib\\string.py\)) Tj T* (W: delayed eval hack detected at line 389) Tj T* ( - string \(C:\\Program Files\\Python\\Lib\\string.py\)) Tj T* (W: delayed eval hack detected at line 418) Tj T* ( - string \(C:\\Program Files\\Python\\Lib\\string.py\)) Tj T* (>) Tj (>) Tj (>) Tj T* ET Q Q Q Q Q q Q Q q 1 0 0 1 62.69291 354.6236 cm Q q 1 0 0 1 62.69291 324.6236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F6 15 Tf 0 0 0 rg (iu.py) Tj /F2 15 Tf (: An ) Tj /F3 15 Tf (imputil ) Tj /F2 15 Tf (Replacement) Tj T* ET Q Q q 1 0 0 1 62.69291 282.6236 cm q BT 1 0 0 1 0 26 Tm 1.691235 Tw 12 TL /F1 10 Tf 0 0 0 rg (Module ) Tj /F4 10 Tf (iu ) Tj /F1 10 Tf (grows out of the pioneering work that Greg Stein did with ) Tj /F4 10 Tf (imputil ) Tj /F1 10 Tf (\(actually, it includes) Tj T* 0 Tw .284985 Tw (some verbatim ) Tj /F4 10 Tf (imputil ) Tj /F1 10 Tf (code, but since Greg didn't copyright it, we won't mention it\). Both modules can) Tj T* 0 Tw (take over Python's builtin import and ease writing of at least certain kinds of import hooks.) Tj T* ET Q Q q 1 0 0 1 62.69291 264.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (iu ) Tj /F1 10 Tf (differs from ) Tj /F4 10 Tf (imputil) Tj /F1 10 Tf (: * faster * better emulation of builtin import * more managable) Tj T* ET Q Q q 1 0 0 1 62.69291 234.6236 cm q BT 1 0 0 1 0 14 Tm .011984 Tw 12 TL /F1 10 Tf 0 0 0 rg (There is an ) Tj /F4 10 Tf (ImportManager ) Tj /F1 10 Tf (which provides the replacement for builtin import and hides all the semantic) Tj T* 0 Tw (complexities of a Python import request from it's delegates.) Tj T* ET Q Q q 1 0 0 1 62.69291 207.6236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F7 12.5 Tf 0 0 0 rg (ImportManager) Tj T* ET Q Q q 1 0 0 1 62.69291 117.6236 cm q BT 1 0 0 1 0 74 Tm .679269 Tw 12 TL /F4 10 Tf 0 0 0 rg (ImportManager ) Tj /F1 10 Tf (formalizes the concept of a metapath. This concept implicitly exists in native Python in) Tj T* 0 Tw 1.097318 Tw (that builtins and frozen modules are searched before ) Tj /F4 10 Tf (sys.path) Tj /F1 10 Tf (, \(on Windows there's also a search of) Tj T* 0 Tw 3.833984 Tw (the registry while on Mac, resources may be searched\). This metapath is a list populated with) Tj T* 0 Tw .743976 Tw /F4 10 Tf (ImportDirector ) Tj /F1 10 Tf (instances. There are ) Tj /F4 10 Tf (ImportDirector ) Tj /F1 10 Tf (subclasses for builtins, frozen modules, \(on) Tj T* 0 Tw .044147 Tw (Windows\) modules found through the registry and a ) Tj /F4 10 Tf (PathImportDirector ) Tj /F1 10 Tf (for handling ) Tj /F4 10 Tf (sys.path) Tj /F1 10 Tf (. For) Tj T* 0 Tw .565868 Tw (a top-level import \(that is, not an import of a module in a package\), ) Tj /F4 10 Tf (ImportManager ) Tj /F1 10 Tf (tries each director) Tj T* 0 Tw (on it's metapath until one succeeds.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 129.2399 0 Td (PyInstaller Manual - iu.py: An imputil Replacement) Tj T* -129.2399 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (29) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R361': class PDFStream 361 0 obj % page stream << /Length 6801 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 717.0236 cm q BT 1 0 0 1 0 26 Tm 4.274269 Tw 12 TL /F4 10 Tf 0 0 0 rg (ImportManager ) Tj /F1 10 Tf (hides the semantic complexity of an import from the directors. It's up to the) Tj T* 0 Tw 1.571163 Tw /F4 10 Tf (ImportManager ) Tj /F1 10 Tf (to decide if an import is relative or absolute; to see if the module has already been) Tj T* 0 Tw (imported; to keep ) Tj /F4 10 Tf (sys.modules ) Tj /F1 10 Tf (up to date; to handle the fromlist and return the correct module object.) Tj T* ET Q Q q 1 0 0 1 62.69291 690.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F7 12.5 Tf 0 0 0 rg (ImportDirector) Tj T* ET Q Q q 1 0 0 1 62.69291 648.0236 cm q BT 1 0 0 1 0 26 Tm .712126 Tw 12 TL /F1 10 Tf 0 0 0 rg (An ) Tj /F4 10 Tf (ImportDirector ) Tj /F1 10 Tf (just needs to respond to ) Tj /F4 10 Tf (getmod\(name\) ) Tj /F1 10 Tf (by returning a module object or ) Tj /F4 10 Tf (None) Tj /F1 10 Tf (.) Tj T* 0 Tw .072619 Tw (As you will see, an ) Tj /F4 10 Tf (ImportDirector ) Tj /F1 10 Tf (can consider name to be atomic - it has no need to examine name) Tj T* 0 Tw (to see if it is dotted.) Tj T* ET Q Q q 1 0 0 1 62.69291 630.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (To see how this works, we need to examine the ) Tj /F4 10 Tf (PathImportDirector) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 603.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F7 12.5 Tf 0 0 0 rg (PathImportDirector) Tj T* ET Q Q q 1 0 0 1 62.69291 525.0236 cm q BT 1 0 0 1 0 62 Tm .776651 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (PathImportDirector ) Tj /F1 10 Tf (subclass manages a list of names - most notably, ) Tj /F4 10 Tf (sys.path) Tj /F1 10 Tf (. To do so, it) Tj T* 0 Tw 2.855318 Tw (maintains a shadowpath - a dictionary mapping the names on its pathlist \(eg, ) Tj /F4 10 Tf (sys.path) Tj /F1 10 Tf (\) to their) Tj T* 0 Tw 2.098651 Tw (associated ) Tj /F4 10 Tf (Owners) Tj /F1 10 Tf (. \(It could do this directly, but the assumption that sys.path is occupied solely by) Tj T* 0 Tw 1.107318 Tw (strings seems ineradicable.\) ) Tj /F4 10 Tf (Owners ) Tj /F1 10 Tf (of the appropriate kind are created as needed \(if all your imports) Tj T* 0 Tw .91152 Tw (are satisfied by the first two elements of ) Tj /F4 10 Tf (sys.path) Tj /F1 10 Tf (, the ) Tj /F4 10 Tf (PathImportDirector) Tj /F1 10 Tf ('s shadowpath will only) Tj T* 0 Tw (have two entries\).) Tj T* ET Q Q q 1 0 0 1 62.69291 498.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F7 12.5 Tf 0 0 0 rg (Owner) Tj T* ET Q Q q 1 0 0 1 62.69291 444.0236 cm q BT 1 0 0 1 0 38 Tm 1.51936 Tw 12 TL /F1 10 Tf 0 0 0 rg (An ) Tj /F4 10 Tf (Owner ) Tj /F1 10 Tf (is much like an ) Tj /F4 10 Tf (ImportDirector ) Tj /F1 10 Tf (but manages a much more concrete piece of turf. For) Tj T* 0 Tw 4.968314 Tw (example, a ) Tj /F4 10 Tf (DirOwner ) Tj /F1 10 Tf (manages one directory. Since there are no other officially recognized) Tj T* 0 Tw .725984 Tw (filesystem-like namespaces for importing, that's all that's included in iu, but it's easy to imagine ) Tj /F4 10 Tf (Owners) Tj T* 0 Tw /F1 10 Tf (for zip files \(and I have one for my own ) Tj /F4 10 Tf (.pyz ) Tj /F1 10 Tf (archive format\) or even URLs.) Tj T* ET Q Q q 1 0 0 1 62.69291 414.0236 cm q BT 1 0 0 1 0 14 Tm .371412 Tw 12 TL /F1 10 Tf 0 0 0 rg (As with ) Tj /F4 10 Tf (ImportDirectors) Tj /F1 10 Tf (, an ) Tj /F4 10 Tf (Owner ) Tj /F1 10 Tf (just needs to respond to ) Tj /F4 10 Tf (getmod\(name\) ) Tj /F1 10 Tf (by returning a module) Tj T* 0 Tw (object or ) Tj /F4 10 Tf (None) Tj /F1 10 Tf (, and it can consider name to be atomic.) Tj T* ET Q Q q 1 0 0 1 62.69291 360.0236 cm q BT 1 0 0 1 0 38 Tm 2.100542 Tw 12 TL /F1 10 Tf 0 0 0 rg (So structurally, we have a tree, rooted at the ) Tj /F4 10 Tf (ImportManager) Tj /F1 10 Tf (. At the next level, we have a set of) Tj T* 0 Tw 4.86816 Tw /F4 10 Tf (ImportDirectors) Tj /F1 10 Tf (. At least one of those directors, the ) Tj /F4 10 Tf (PathImportDirector ) Tj /F1 10 Tf (in charge of) Tj T* 0 Tw 1.08561 Tw /F4 10 Tf (sys.path) Tj /F1 10 Tf (, has another level beneath it, consisting of ) Tj /F4 10 Tf (Owners) Tj /F1 10 Tf (. This much of the tree covers the entire) Tj T* 0 Tw (top-level import namespace.) Tj T* ET Q Q q 1 0 0 1 62.69291 330.0236 cm q BT 1 0 0 1 0 14 Tm 3.27936 Tw 12 TL /F1 10 Tf 0 0 0 rg (The rest of the import namespace is covered by treelets, each rooted in a package module \(an) Tj T* 0 Tw /F4 10 Tf (__init__.py) Tj /F1 10 Tf (\).) Tj T* ET Q Q q 1 0 0 1 62.69291 303.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Packages) Tj T* ET Q Q q 1 0 0 1 62.69291 237.0236 cm q BT 1 0 0 1 0 50 Tm 1.847045 Tw 12 TL /F1 10 Tf 0 0 0 rg (To make this work, ) Tj /F4 10 Tf (Owners ) Tj /F1 10 Tf (need to recognize when a module is a package. For a ) Tj /F4 10 Tf (DirOwner) Tj /F1 10 Tf (, this) Tj T* 0 Tw .774983 Tw (means that name is a subdirectory which contains an ) Tj /F4 10 Tf (__init__.py) Tj /F1 10 Tf (. The ) Tj /F4 10 Tf (__init__ ) Tj /F1 10 Tf (module is loaded) Tj T* 0 Tw 2.10229 Tw (and its ) Tj /F4 10 Tf (__path__ ) Tj /F1 10 Tf (is initialized with the subdirectory. Then, a ) Tj /F4 10 Tf (PathImportDirector ) Tj /F1 10 Tf (is created to) Tj T* 0 Tw .384147 Tw (manage this ) Tj /F4 10 Tf (__path__) Tj /F1 10 Tf (. Finally the new ) Tj /F4 10 Tf (PathImportDirector) Tj /F1 10 Tf ('s ) Tj /F4 10 Tf (getmod ) Tj /F1 10 Tf (is assigned to the package's) Tj T* 0 Tw /F4 10 Tf (__importsub__ ) Tj /F1 10 Tf (function.) Tj T* ET Q Q q 1 0 0 1 62.69291 159.0236 cm q BT 1 0 0 1 0 62 Tm .48936 Tw 12 TL /F1 10 Tf 0 0 0 rg (When a module within the package is imported, the request is routed \(by the ) Tj /F4 10 Tf (ImportManager) Tj /F1 10 Tf (\) diretly to) Tj T* 0 Tw 3.644147 Tw (the package's ) Tj /F4 10 Tf (__importsub__) Tj /F1 10 Tf (. In a hierarchical namespace \(like a filesystem\), this means that) Tj T* 0 Tw 2.474524 Tw /F4 10 Tf (__importsub__ ) Tj /F1 10 Tf (\(which is really the bound getmod method of a ) Tj /F4 10 Tf (PathImportDirector ) Tj /F1 10 Tf (instance\)) Tj T* 0 Tw .275542 Tw (needs only the module name, not the package name or the fully qualified name. And that's exactly what it) Tj T* 0 Tw 1.706988 Tw (gets. \(In a flat namespace - like most archives - it is perfectly easy to route the request back up the) Tj T* 0 Tw (package tree to the archive ) Tj /F4 10 Tf (Owner) Tj /F1 10 Tf (, qualifying the name at each step.\)) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 163.7049 0 Td (PyInstaller Manual - ImportDirector) Tj T* -163.7049 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (30) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R362': class PDFStream 362 0 obj % page stream << /Length 6404 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 738.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Possibilities) Tj T* ET Q Q q 1 0 0 1 62.69291 648.0236 cm q BT 1 0 0 1 0 74 Tm .273876 Tw 12 TL /F1 10 Tf 0 0 0 rg (Let's say we want to import from zip files. So, we subclass ) Tj /F4 10 Tf (Owner) Tj /F1 10 Tf (. The ) Tj /F4 10 Tf (__init__ ) Tj /F1 10 Tf (method should take a) Tj T* 0 Tw 1.873876 Tw (filename, and raise a ) Tj /F4 10 Tf (ValueError ) Tj /F1 10 Tf (if the file is not an acceptable ) Tj /F4 10 Tf (.zip ) Tj /F1 10 Tf (file, \(when a new name is) Tj T* 0 Tw .493555 Tw (encountered on ) Tj /F4 10 Tf (sys.path ) Tj /F1 10 Tf (or a package's ) Tj /F4 10 Tf (__path__) Tj /F1 10 Tf (, registered Owners are tried until one accepts the) Tj T* 0 Tw 1.779398 Tw (name\). The ) Tj /F4 10 Tf (getmod ) Tj /F1 10 Tf (method would check the zip file's contents and return ) Tj /F4 10 Tf (None ) Tj /F1 10 Tf (if the name is not) Tj T* 0 Tw 1.05686 Tw (found. Otherwise, it would extract the marshalled code object from the zip, create a new module object) Tj T* 0 Tw .189461 Tw (and perform a bit of initialization \(12 lines of code all told for my own archive format, including initializing a) Tj T* 0 Tw (pack age with it's ) Tj /F4 10 Tf (__subimporter__) Tj /F1 10 Tf (\).) Tj T* ET Q Q q 1 0 0 1 62.69291 618.0236 cm q BT 1 0 0 1 0 14 Tm .692619 Tw 12 TL /F1 10 Tf 0 0 0 rg (Once the new ) Tj /F4 10 Tf (Owner ) Tj /F1 10 Tf (class is registered with ) Tj /F4 10 Tf (iu) Tj /F1 10 Tf (, you can put a zip file on ) Tj /F4 10 Tf (sys.path) Tj /F1 10 Tf (. A package could) Tj T* 0 Tw (even put a zip file on its ) Tj /F4 10 Tf (__path__) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 591.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Compatibility) Tj T* ET Q Q q 1 0 0 1 62.69291 537.0236 cm q BT 1 0 0 1 0 38 Tm .50061 Tw 12 TL /F1 10 Tf 0 0 0 rg (This code has been tested with the PyXML, mxBase and Win32 packages, covering over a dozen import) Tj T* 0 Tw 1.45784 Tw (hacks from manipulations of ) Tj /F4 10 Tf (__path__ ) Tj /F1 10 Tf (to replacing a module in ) Tj /F4 10 Tf (sys.modules ) Tj /F1 10 Tf (with a different one.) Tj T* 0 Tw .573555 Tw (Emulation of Python's native import is nearly exact, including the names recorded in ) Tj /F4 10 Tf (sys.modules ) Tj /F1 10 Tf (and) Tj T* 0 Tw (module attributes \(packages imported through ) Tj /F4 10 Tf (iu ) Tj /F1 10 Tf (have an extra attribute - ) Tj /F4 10 Tf (__importsub__) Tj /F1 10 Tf (\).) Tj T* ET Q Q q 1 0 0 1 62.69291 510.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Performance) Tj T* ET Q Q q 1 0 0 1 62.69291 456.0236 cm q BT 1 0 0 1 0 38 Tm .546988 Tw 12 TL /F1 10 Tf 0 0 0 rg (In most cases, ) Tj /F4 10 Tf (iu ) Tj /F1 10 Tf (is slower than builtin import \(by 15 to 20%\) but faster than ) Tj /F4 10 Tf (imputil ) Tj /F1 10 Tf (\(by 15 to 20%\).) Tj T* 0 Tw .353735 Tw (By inserting archives at the front of ) Tj /F4 10 Tf (sys.path ) Tj /F1 10 Tf (containing the standard lib and the package being tested,) Tj T* 0 Tw .77856 Tw (this can be reduced to 5 to 10% slower \(or, on my 1.52 box, 10% faster!\) than builtin import. A bit more) Tj T* 0 Tw (can be shaved off by manipulating the ) Tj /F4 10 Tf (ImportManager) Tj /F1 10 Tf ('s metapath.) Tj T* ET Q Q q 1 0 0 1 62.69291 429.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Limitations) Tj T* ET Q Q q 1 0 0 1 62.69291 387.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.159986 Tw (This module makes no attempt to facilitate policy import hacks. It is easy to implement certain kinds of) Tj T* 0 Tw .795318 Tw (policies within a particular domain, but fundamentally iu works by dividing up the import namespace into) Tj T* 0 Tw (independent domains.) Tj T* ET Q Q q 1 0 0 1 62.69291 333.0236 cm q BT 1 0 0 1 0 38 Tm .35332 Tw 12 TL /F1 10 Tf 0 0 0 rg (Quite simply, I think cross-domain import hacks are a very bad idea. As author of the original package on) Tj T* 0 Tw .852485 Tw (which ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (is based, McMillan worked with import hacks for many years. Many of them are highly) Tj T* 0 Tw 3.909147 Tw (fragile; they often rely on undocumented \(maybe even accidental\) features of implementation. A) Tj T* 0 Tw (cross-domain import hack is not likely to work with PyXML, for example.) Tj T* ET Q Q q 1 0 0 1 62.69291 279.0236 cm q BT 1 0 0 1 0 38 Tm .719269 Tw 12 TL /F1 10 Tf 0 0 0 rg (That rant aside, you can modify ) Tj /F4 10 Tf (ImportManger ) Tj /F1 10 Tf (to implement different policies. For example, a version) Tj T* 0 Tw .720814 Tw (that implements three import primitives: absolute import, relative import and recursive-relative import. No) Tj T* 0 Tw 6.209147 Tw (idea what the Python syntax for those should be, but ) Tj /F4 10 Tf (__aimport__) Tj /F1 10 Tf (, ) Tj /F4 10 Tf (__rimport__ ) Tj /F1 10 Tf (and) Tj T* 0 Tw /F4 10 Tf (__rrimport__ ) Tj /F1 10 Tf (were easy to implement.) Tj T* ET Q Q q 1 0 0 1 62.69291 252.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (iu Usage) Tj T* ET Q Q q 1 0 0 1 62.69291 234.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Here's a simple example of using ) Tj /F4 10 Tf (iu ) Tj /F1 10 Tf (as a builtin import replacement.) Tj T* ET Q Q q 1 0 0 1 62.69291 228.0236 cm Q q 1 0 0 1 62.69291 118.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 448.6898 108 re B* Q q BT 1 0 0 1 0 86 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( import iu) Tj T* (>) Tj (>) Tj (>) Tj ( iu.ImportManager\(\).install\(\)) Tj T* (>) Tj (>) Tj (>) Tj T* (>) Tj (>) Tj (>) Tj ( import DateTime) Tj T* (>) Tj (>) Tj (>) Tj ( DateTime.__importsub__) Tj T* (<) Tj (method PathImportDirector.getmod) Tj T* ( of PathImportDirector instance at 825900) Tj (>) Tj T* (>) Tj (>) Tj (>) Tj T* ET Q Q Q Q Q q Q Q q 1 0 0 1 62.69291 118.8236 cm Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 169.2599 0 Td (PyInstaller Manual - Possibilities) Tj T* -169.2599 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (31) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R363': class PDFPageLabels 363 0 obj % Document Root << /Nums [ 0 364 0 R 1 365 0 R 2 366 0 R 3 367 0 R 4 368 0 R 5 369 0 R 6 370 0 R 7 371 0 R 8 372 0 R 9 373 0 R 10 374 0 R 11 375 0 R 12 376 0 R 13 377 0 R 14 378 0 R 15 379 0 R 16 380 0 R 17 381 0 R 18 382 0 R 19 383 0 R 20 384 0 R 21 385 0 R 22 386 0 R 23 387 0 R 24 388 0 R 25 389 0 R 26 390 0 R 27 391 0 R 28 392 0 R 29 393 0 R 30 394 0 R ] >> endobj % 'R364': class PDFPageLabel 364 0 obj % None << /S /D /St 1 >> endobj % 'R365': class PDFPageLabel 365 0 obj % None << /S /D /St 2 >> endobj % 'R366': class PDFPageLabel 366 0 obj % None << /S /D /St 3 >> endobj % 'R367': class PDFPageLabel 367 0 obj % None << /S /D /St 4 >> endobj % 'R368': class PDFPageLabel 368 0 obj % None << /S /D /St 5 >> endobj % 'R369': class PDFPageLabel 369 0 obj % None << /S /D /St 6 >> endobj % 'R370': class PDFPageLabel 370 0 obj % None << /S /D /St 7 >> endobj % 'R371': class PDFPageLabel 371 0 obj % None << /S /D /St 8 >> endobj % 'R372': class PDFPageLabel 372 0 obj % None << /S /D /St 9 >> endobj % 'R373': class PDFPageLabel 373 0 obj % None << /S /D /St 10 >> endobj % 'R374': class PDFPageLabel 374 0 obj % None << /S /D /St 11 >> endobj % 'R375': class PDFPageLabel 375 0 obj % None << /S /D /St 12 >> endobj % 'R376': class PDFPageLabel 376 0 obj % None << /S /D /St 13 >> endobj % 'R377': class PDFPageLabel 377 0 obj % None << /S /D /St 14 >> endobj % 'R378': class PDFPageLabel 378 0 obj % None << /S /D /St 15 >> endobj % 'R379': class PDFPageLabel 379 0 obj % None << /S /D /St 16 >> endobj % 'R380': class PDFPageLabel 380 0 obj % None << /S /D /St 17 >> endobj % 'R381': class PDFPageLabel 381 0 obj % None << /S /D /St 18 >> endobj % 'R382': class PDFPageLabel 382 0 obj % None << /S /D /St 19 >> endobj % 'R383': class PDFPageLabel 383 0 obj % None << /S /D /St 20 >> endobj % 'R384': class PDFPageLabel 384 0 obj % None << /S /D /St 21 >> endobj % 'R385': class PDFPageLabel 385 0 obj % None << /S /D /St 22 >> endobj % 'R386': class PDFPageLabel 386 0 obj % None << /S /D /St 23 >> endobj % 'R387': class PDFPageLabel 387 0 obj % None << /S /D /St 24 >> endobj % 'R388': class PDFPageLabel 388 0 obj % None << /S /D /St 25 >> endobj % 'R389': class PDFPageLabel 389 0 obj % None << /S /D /St 26 >> endobj % 'R390': class PDFPageLabel 390 0 obj % None << /S /D /St 27 >> endobj % 'R391': class PDFPageLabel 391 0 obj % None << /S /D /St 28 >> endobj % 'R392': class PDFPageLabel 392 0 obj % None << /S /D /St 29 >> endobj % 'R393': class PDFPageLabel 393 0 obj % None << /S /D /St 30 >> endobj % 'R394': class PDFPageLabel 394 0 obj % None << /S /D /St 31 >> endobj xref 0 395 0000000000 65535 f 0000000113 00000 n 0000000288 00000 n 0000000453 00000 n 0000000640 00000 n 0000000884 00000 n 0000001112 00000 n 0000001436 00000 n 0000001678 00000 n 0000001907 00000 n 0000002109 00000 n 0000002352 00000 n 0000002595 00000 n 0000002838 00000 n 0000003081 00000 n 0000003325 00000 n 0000003569 00000 n 0000003813 00000 n 0000004057 00000 n 0000004301 00000 n 0000004545 00000 n 0000004789 00000 n 0000005033 00000 n 0000005277 00000 n 0000005521 00000 n 0000005765 00000 n 0000006009 00000 n 0000006253 00000 n 0000006497 00000 n 0000006741 00000 n 0000006985 00000 n 0000007229 00000 n 0000007473 00000 n 0000007717 00000 n 0000007961 00000 n 0000008205 00000 n 0000008449 00000 n 0000008693 00000 n 0000008937 00000 n 0000009181 00000 n 0000009425 00000 n 0000009669 00000 n 0000009913 00000 n 0000010157 00000 n 0000010401 00000 n 0000010645 00000 n 0000010889 00000 n 0000011133 00000 n 0000011377 00000 n 0000011621 00000 n 0000011865 00000 n 0000012109 00000 n 0000012353 00000 n 0000012597 00000 n 0000012841 00000 n 0000013085 00000 n 0000013329 00000 n 0000013573 00000 n 0000013817 00000 n 0000014061 00000 n 0000014305 00000 n 0000014549 00000 n 0000014793 00000 n 0000015037 00000 n 0000015281 00000 n 0000015525 00000 n 0000015769 00000 n 0000016013 00000 n 0000016257 00000 n 0000016501 00000 n 0000016745 00000 n 0000016989 00000 n 0000017233 00000 n 0000017477 00000 n 0000017720 00000 n 0000017963 00000 n 0000018206 00000 n 0000018449 00000 n 0000018692 00000 n 0000018919 00000 n 0000019866 00000 n 0000020109 00000 n 0000020352 00000 n 0000020596 00000 n 0000020840 00000 n 0000021084 00000 n 0000021328 00000 n 0000021572 00000 n 0000021816 00000 n 0000022060 00000 n 0000022304 00000 n 0000022548 00000 n 0000022778 00000 n 0000022954 00000 n 0000023198 00000 n 0000023442 00000 n 0000023686 00000 n 0000023930 00000 n 0000024174 00000 n 0000024418 00000 n 0000024662 00000 n 0000024907 00000 n 0000025152 00000 n 0000025397 00000 n 0000025642 00000 n 0000025887 00000 n 0000026132 00000 n 0000026378 00000 n 0000026624 00000 n 0000026870 00000 n 0000027116 00000 n 0000027362 00000 n 0000027608 00000 n 0000027854 00000 n 0000028100 00000 n 0000028346 00000 n 0000028592 00000 n 0000028838 00000 n 0000029084 00000 n 0000029330 00000 n 0000029576 00000 n 0000029822 00000 n 0000030068 00000 n 0000030314 00000 n 0000030560 00000 n 0000030806 00000 n 0000031052 00000 n 0000031298 00000 n 0000031544 00000 n 0000031790 00000 n 0000032036 00000 n 0000032282 00000 n 0000032528 00000 n 0000032774 00000 n 0000033020 00000 n 0000033266 00000 n 0000033512 00000 n 0000033758 00000 n 0000034004 00000 n 0000034250 00000 n 0000034496 00000 n 0000034742 00000 n 0000034988 00000 n 0000035234 00000 n 0000035480 00000 n 0000035726 00000 n 0000035972 00000 n 0000036203 00000 n 0000036401 00000 n 0000036647 00000 n 0000036893 00000 n 0000037139 00000 n 0000037385 00000 n 0000037631 00000 n 0000037860 00000 n 0000038873 00000 n 0000039119 00000 n 0000039365 00000 n 0000039611 00000 n 0000039857 00000 n 0000040103 00000 n 0000040349 00000 n 0000040595 00000 n 0000040841 00000 n 0000041087 00000 n 0000041333 00000 n 0000041579 00000 n 0000041825 00000 n 0000042071 00000 n 0000042317 00000 n 0000042563 00000 n 0000042808 00000 n 0000043060 00000 n 0000043542 00000 n 0000043788 00000 n 0000044034 00000 n 0000044279 00000 n 0000044508 00000 n 0000044860 00000 n 0000045089 00000 n 0000045411 00000 n 0000045657 00000 n 0000045903 00000 n 0000046132 00000 n 0000046474 00000 n 0000046703 00000 n 0000047025 00000 n 0000047254 00000 n 0000047576 00000 n 0000047821 00000 n 0000048093 00000 n 0000048366 00000 n 0000048639 00000 n 0000048869 00000 n 0000049231 00000 n 0000049476 00000 n 0000049706 00000 n 0000050038 00000 n 0000050284 00000 n 0000050514 00000 n 0000050830 00000 n 0000051115 00000 n 0000051287 00000 n 0000051587 00000 n 0000051833 00000 n 0000052079 00000 n 0000052309 00000 n 0000052635 00000 n 0000052919 00000 n 0000053218 00000 n 0000053461 00000 n 0000053783 00000 n 0000054029 00000 n 0000054259 00000 n 0000054590 00000 n 0000054851 00000 n 0000055119 00000 n 0000055376 00000 n 0000055718 00000 n 0000055949 00000 n 0000056151 00000 n 0000056396 00000 n 0000056689 00000 n 0000057031 00000 n 0000057261 00000 n 0000057583 00000 n 0000057855 00000 n 0000062137 00000 n 0000062434 00000 n 0000062706 00000 n 0000068640 00000 n 0000069127 00000 n 0000076186 00000 n 0000076475 00000 n 0000076732 00000 n 0000076980 00000 n 0000077219 00000 n 0000077637 00000 n 0000077898 00000 n 0000078153 00000 n 0000078387 00000 n 0000078728 00000 n 0000079001 00000 n 0000079323 00000 n 0000079553 00000 n 0000079859 00000 n 0000080143 00000 n 0000080427 00000 n 0000080711 00000 n 0000080996 00000 n 0000081160 00000 n 0000081495 00000 n 0000081624 00000 n 0000081801 00000 n 0000082004 00000 n 0000082248 00000 n 0000082434 00000 n 0000082633 00000 n 0000082845 00000 n 0000083055 00000 n 0000083257 00000 n 0000083460 00000 n 0000083708 00000 n 0000083898 00000 n 0000084089 00000 n 0000084296 00000 n 0000084505 00000 n 0000084691 00000 n 0000084940 00000 n 0000085121 00000 n 0000085314 00000 n 0000085521 00000 n 0000085708 00000 n 0000085947 00000 n 0000086127 00000 n 0000086342 00000 n 0000086571 00000 n 0000086747 00000 n 0000086934 00000 n 0000087121 00000 n 0000087308 00000 n 0000087495 00000 n 0000087686 00000 n 0000087874 00000 n 0000088044 00000 n 0000088292 00000 n 0000088503 00000 n 0000088757 00000 n 0000088942 00000 n 0000089148 00000 n 0000089348 00000 n 0000089592 00000 n 0000089778 00000 n 0000089984 00000 n 0000090198 00000 n 0000090407 00000 n 0000090598 00000 n 0000090839 00000 n 0000091062 00000 n 0000091248 00000 n 0000091431 00000 n 0000091679 00000 n 0000091868 00000 n 0000092063 00000 n 0000092236 00000 n 0000092424 00000 n 0000092645 00000 n 0000092881 00000 n 0000093066 00000 n 0000093258 00000 n 0000093460 00000 n 0000093721 00000 n 0000093902 00000 n 0000094101 00000 n 0000094299 00000 n 0000094496 00000 n 0000094669 00000 n 0000094916 00000 n 0000095092 00000 n 0000095291 00000 n 0000095467 00000 n 0000095709 00000 n 0000095890 00000 n 0000096088 00000 n 0000096290 00000 n 0000096479 00000 n 0000096671 00000 n 0000096868 00000 n 0000097065 00000 n 0000097260 00000 n 0000097455 00000 n 0000097613 00000 n 0000098022 00000 n 0000100834 00000 n 0000110215 00000 n 0000119856 00000 n 0000128986 00000 n 0000136718 00000 n 0000145772 00000 n 0000153279 00000 n 0000159156 00000 n 0000165176 00000 n 0000174821 00000 n 0000182102 00000 n 0000187931 00000 n 0000196807 00000 n 0000206838 00000 n 0000214001 00000 n 0000220809 00000 n 0000227307 00000 n 0000231185 00000 n 0000237749 00000 n 0000244929 00000 n 0000252011 00000 n 0000261346 00000 n 0000268712 00000 n 0000275161 00000 n 0000282131 00000 n 0000288284 00000 n 0000295268 00000 n 0000302262 00000 n 0000307671 00000 n 0000314573 00000 n 0000321082 00000 n 0000321619 00000 n 0000321698 00000 n 0000321777 00000 n 0000321856 00000 n 0000321935 00000 n 0000322014 00000 n 0000322093 00000 n 0000322172 00000 n 0000322251 00000 n 0000322330 00000 n 0000322410 00000 n 0000322490 00000 n 0000322570 00000 n 0000322650 00000 n 0000322730 00000 n 0000322810 00000 n 0000322890 00000 n 0000322970 00000 n 0000323050 00000 n 0000323130 00000 n 0000323210 00000 n 0000323290 00000 n 0000323370 00000 n 0000323450 00000 n 0000323530 00000 n 0000323610 00000 n 0000323690 00000 n 0000323770 00000 n 0000323850 00000 n 0000323930 00000 n 0000324010 00000 n trailer << /ID % ReportLab generated PDF document -- digest (http://www.reportlab.com) [(L\301\3558\316\033\361\341B\011\347\033F\306\346\274) (L\301\3558\316\033\361\341B\011\347\033F\306\346\274)] /Info 250 0 R /Root 249 0 R /Size 395 >> startxref 324059 %%EOF