annotate mupdf-source/thirdparty/mujs/docs/examples.html @ 27:28f7eb8e96ac

Add FreeBSD to classifiers
author Franz Glasner <fzglas.hg@dom66.de>
date Fri, 19 Sep 2025 19:08:19 +0200
parents b50eed0cc0ef
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
1 <!DOCTYPE html>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
2 <html>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
3 <head>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
4 <link href="style.css" rel="stylesheet">
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
5 <title>MuJS Examples</title>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
6 </head>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
7
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
8 <body>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
9
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
10 <header>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
11 <h1>MuJS Examples</h1>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
12 </header>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
13
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
14 <nav>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
15 <a href="introduction.html">Introduction</a>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
16 <a href="reference.html">Reference</a>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
17 <a href="examples.html">Examples</a>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
18 <a href="license.html">License</a>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
19 <a href="http://git.ghostscript.com/?p=mujs.git;a=summary">Source</a>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
20 <a href="https://bugs.ghostscript.com/">Bugs</a>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
21 </nav>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
22
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
23 <article>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
24
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
25 <h2>A stand-alone interpreter</h2>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
26
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
27 <pre>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
28 #include &lt;stdio.h&gt;
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
29 #include &lt;mujs.h&gt;
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
30
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
31 int main(int argc, char **argv)
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
32 {
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
33 char line[256];
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
34 js_State *J = js_newstate(NULL, NULL, JS_STRICT);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
35 while (fgets(line, sizeof line, stdin))
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
36 js_dostring(J, line);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
37 js_freestate(J);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
38 }
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
39 </pre>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
40
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
41 <h2>Hello, world!</h2>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
42
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
43 <pre>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
44 #include &lt;stdio.h&gt;
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
45 #include &lt;mujs.h&gt;
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
46
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
47 static void hello(js_State *J)
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
48 {
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
49 const char *name = js_tostring(J, 1);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
50 printf("Hello, %s!\n", name);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
51 js_pushundefined(J);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
52 }
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
53
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
54 int main(int argc, char **argv)
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
55 {
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
56 js_State *J = js_newstate(NULL, NULL, JS_STRICT);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
57
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
58 js_newcfunction(J, hello, "hello", 1);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
59 js_setglobal(J, "hello");
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
60
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
61 js_dostring(J, "hello('world');");
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
62
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
63 js_freestate(J);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
64 }
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
65 </pre>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
66
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
67 <h2>Configuration file</h2>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
68
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
69 <pre>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
70 js_dofile(J, "config.js")
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
71
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
72 js_getglobal(J, "foo");
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
73 foo = js_tonumber(J, -1);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
74 js_pop(J, 1);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
75 </pre>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
76
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
77 <h2>Object manipulation</h2>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
78
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
79 <pre>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
80 // t = { foo: 42, bar: true }
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
81
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
82 js_newobject(J);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
83 {
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
84 js_pushnumber(J, 42);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
85 js_setproperty(J, -2, "foo");
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
86 js_pushboolean(J, 1);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
87 js_setproperty(J, -2, "bar");
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
88 }
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
89 js_setglobal(J, "t");
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
90 </pre>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
91
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
92 <h2>Callbacks from C to JS (by name)</h2>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
93
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
94 <pre>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
95 static int call_callback(js_State *J, const char *arg1, int arg2)
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
96 {
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
97 int result;
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
98
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
99 /* Find the function to call. */
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
100 js_getglobal(J, "my_callback");
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
101
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
102 /* Push arguments to function. */
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
103 js_pushnull(J); /* the 'this' object to use */
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
104 js_pushstring(J, arg1);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
105 js_pushnumber(J, arg2);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
106
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
107 /* Call function and check for exceptions. */
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
108 if (js_pcall(J, 2)) {
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
109 fprintf(stderr, "an exception occurred in the javascript callback\n");
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
110 js_pop(J, 1);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
111 return -1;
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
112 }
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
113
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
114 /* Retrieve return value. */
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
115 result = js_tonumber(J, -1);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
116 js_pop(J, 1);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
117
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
118 return result;
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
119 }
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
120 </pre>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
121
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
122 <h2>Callbacks from C to JS</h2>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
123
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
124 <pre>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
125 const char *handle = NULL; /* handle to stowed away js function */
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
126
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
127 static void set_callback(js_State *J)
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
128 {
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
129 if (handle)
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
130 js_unref(J, handle); /* delete old function */
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
131 js_copy(J, 1);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
132 handle = js_ref(J); /* stow the js function in the registry */
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
133 }
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
134
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
135 static void call_callback(js_State *J, int arg1, int arg2)
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
136 {
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
137 js_getregistry(J, handle); /* retrieve the js function from the registry */
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
138 js_pushnull(J);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
139 js_pushnumber(J, arg1);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
140 js_pushnumber(J, arg2);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
141 js_pcall(J, 2);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
142 js_pop(J, 1);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
143 }
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
144 </pre>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
145
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
146 <h2>Complete userdata example</h2>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
147
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
148 <pre>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
149 #include &lt;stdio.h&gt;
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
150 #include &lt;mujs.h&gt;
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
151
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
152 #define TAG "File"
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
153
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
154 static void new_File(js_State *J)
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
155 {
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
156 FILE *file;
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
157
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
158 if (js_isundefined(J, 1)) {
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
159 file = stdin;
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
160 } else {
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
161 const char *filename = js_tostring(J, 1);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
162 file = fopen(filename, "r");
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
163 if (!file)
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
164 js_error(J, "cannot open file: '%s'", filename);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
165 }
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
166
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
167 js_currentfunction(J);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
168 js_getproperty(J, -1, "prototype");
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
169 js_newuserdata(J, TAG, file);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
170 }
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
171
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
172 static void File_prototype_readByte(js_State *J)
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
173 {
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
174 FILE *file = js_touserdata(J, 0, TAG);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
175 js_pushnumber(J, getc(file));
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
176 }
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
177
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
178 static void File_prototype_readLine(js_State *J)
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
179 {
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
180 char line[256], *s;
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
181 FILE *file = js_touserdata(J, 0, TAG);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
182 s = fgets(line, sizeof line, file);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
183 if (s)
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
184 js_pushstring(J, line);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
185 else
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
186 js_pushnull(J);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
187 }
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
188
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
189 static void File_prototype_close(js_State *J)
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
190 {
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
191 FILE *file = js_touserdata(J, 0, TAG);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
192 fclose(file);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
193 js_pushundefined(J);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
194 }
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
195
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
196 void initfile(js_State *J)
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
197 {
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
198 js_getglobal(J, "Object");
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
199 js_getproperty(J, -1, "prototype"); // File.prototype.[[Prototype]] = Object.prototype
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
200 js_newuserdata(J, TAG, stdin); // File.prototype.[[Userdata]] = stdin
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
201 {
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
202 js_newcfunction(J, File_prototype_readByte, "File.prototype.readByte", 0);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
203 js_defproperty(J, -2, "readByte", JS_DONTENUM);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
204
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
205 js_newcfunction(J, File_prototype_readLine, "File.prototype.readLine", 0);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
206 js_defproperty(J, -2, "readLine", JS_DONTENUM);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
207
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
208 js_newcfunction(J, File_prototype_close, "File.prototype.close", 0);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
209 js_defproperty(J, -2, "close", JS_DONTENUM);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
210 }
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
211 js_newcconstructor(J, new_File, new_File, "File", 1);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
212 js_defglobal(J, "File", JS_DONTENUM);
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
213 }
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
214 </pre>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
215
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
216 </article>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
217
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
218 <footer>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
219 <a href="http://artifex.com"><img src="artifex-logo.png" align="right"></a>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
220 Copyright &copy; 2013-2017 Artifex Software Inc.
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
221 </footer>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
222
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
223 </body>
b50eed0cc0ef ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
224 </html>
ޟMO\BHsD>DݧoA5Zhtʊ($8lܢ|JOEC@ҍ J)CJH>%\7MrhRzl EY)IHRZ)YB'I^Y(j! Kӣ }ТDJ:ZHEZ"o>Jlh@8رlX)dѦ,eZ};;r43 t㏻+Q$,MI K5 QD)B3 Rz>>b m~D*nN$!;6\.DJmߗn|sbo^* sHΓюW^ְ^t ّS %R#JB}l]3] 5@T8n]\gVͱ;Φ,i #h!!1NB5#ޯ~N 4X&~MP,-@V +"!FP8m /pIKoM2i8L)fk;r Gs 0#AXAk6aUB&B,N' H$K,gx\pB'#"ĒH(*E#kz/ЮI  /pdXDI8$yH[:XBƊcjXH|(bI/Ɇ$Buj h):!)aOWQՆ|9s=OA%1JCzXnzH\N5"J U#DD m!PW7~r$GHI #a59rb.8&[pG*ݑ{" "]}0O蚈 4rLMQ^3lt\v5O\3&|Bu0[Hp,&c0qE ?,G <6&Wँg{>=4pTk^x O0ii^N$) )(i 'WLq(R(?lL=s%Adp {Gœm+C?ª|"|-| ݈+uT;rR/`| GD_h9Car %J( @8=v9}G[GPPH6\FNt-_as4We.>n6ezAPYJеE^Z[ UmzR%(}J)B lIE)% "Pi;bG9)BtTE1̋ "AhTlaf&vX.gUORV s4c9G &a.dg˂CZN 4BJ ;`ٙNJ mѪBwF (g:Pedux~?whSWi ) j)tAl4MKFbA趥 f& 6j:E$sx!>DcH I\9mT!ńNaDTc2YȠVEZsL1Ij(v玾1*gxR̋OE-"FAlQE\UnVv8n??<8kv==˸gIUٿ -pCN9Ȱ7ӏ fN&X 9 SWI!eTlv2=<$bn]qD̒$Xp,@inqĆ 6 Cfln{6ع~H JZ R$!b*}eJ}²2+^OM600J"" :yZ?]Q+ns#;wAĉCD8tfEQE=I-mw&#]`[*X&H?$?\|gbt!OYbIDe + ѡ-Hbh\JмSUGkU('df`G Sy YMPBBE$WAEJ̀ri{|"ZswTh[?ؓ-z FB.4 i' hha@/ރrkFhOD?S㬟x!G=[̲ FFU4eepίS~ gRHk`bt&=E4ȮFcÇo]og!,K^f)QHsb"3h6ˆ^[J2Rrz`^p Fe) Zbb((Js4RSGf,]ց.60񢒻+'D>f؈}0%(qQZ'`^}`R-_>Hmp.zcGut @=&!2)[3꟱QeT:"=K' H!2!Ɣ'^8dGis:!g=6qh(w+ |}/v!$9y2:6Zxqs ,piD3C33ܗ5=J(b! g&@n,D ),º7NF""08HnջNy9”O"L,B/gHLP H\a} GuŽFwl H=jo ' 9[tܕdX4U8Z*&>T>k"( μ W9j C&֧s{ib $ut̻A#L" "n-cxs&Ӗ*'0))=;`yi!P;M'K6Z5ߍ-gTMH"8F!+"xtp&ed h,Q".*#BPEGv tXru+pL\Ȝs!+PQ1DuiMEAN]UH#.ZQDC :ҙ()"BxZY%*dlIt (~? i7'uA㚺]yAL"&ڠ2-EE:K xpX0-?pPkKLrxWM[l>Q_zR0eN)mPz,'Q7h*&P AM Iwʼn1FdR'<rC.mClwD4 ӟeoܻs)u12-{'0?xDyEcϲM} J^N[,HdQV1\ 0Bl5BYaQe>"Gq=׫פVD6r|dzn eC) '!Q__z'FRɪhY ZPPt\nn6t@dTMCOQx9CH)!W-"|Ѳ8*? w1ҀUPșt . ]kp)<)%N0 2"sl,  ,dw{,I~~N?q _[(E 5! [^ù[6gff} r &}(gzzG@̝Wp{+̀Y!"NLs b`P\"ח 4JLlq ^9Zx{K%s`}ot Ø72纎B%A  :N0Ԕ+pQ(xZtq %w}W٩4RAnc͖"=Ks>l EsT-DsS| 44b 2" V CA#ٕʝZ}77>a't %H6BPpp 4`K*x]\ %cAACd {l;p$5"~9J/| XթjU$w-a#{>|؆1a/0BP>nHsX"AO豛hB*9j1/v.'!EE5h&*_ gP?5N!BS}ȮFJ􌞛X7Jʪ"@lzR}ys"&q(=!P9$=9:MN8(س{gpN"."䀇,$F lI{2j'lQRK\8r:0QDbPIs. :9Y1sI[H@/%w"Aă8L6F(8Bq7yab;Ζ [ͣԝG:ܣfd& ngӘ8&Tԋ(B&)wJ9g)(fFb2TKI˘ۓ)tlh!D0bMFZDI ΍V1KZK!`ReJ*Fd E0n[,t`y'76D !Njv *hV]:WJCT n ts4Q* CLmlњ95hQ)^1db*.mDQ'걣fΪtTRf8.8#@7v*+K(POVK9 (ErȚKWjeVƮuTyTTZ KJ&Ap\m3l)r: 3O:~0q w8.I))KQ<G=uQͤjUF&E*De$Ď;!% "Iq6*T80٦ę":'luFD֭B(61r1(F b1&R 4b""!""$*g"!Pj$(e"*XEAPGrDPmQ B6+Bm5bmk['"HbfjhbJZ Z&610EH  4pZ;Ɖh=Z kNfX)QDC׻rEzƩ" Ɣ*~} 6e-@(cQ@|9AFk1[9LҜ#Ո;8Zht7!6.&>NFY #HӠ!@-.OE8/c$LDYEn''H'akڠ5MB1j5a O! PāG9nR'V4N\\z9{c3cFh[y[ysv:Rx{9g-r1{IPPN'l9BLj?vJ0H[gd̪BR u?f0R^:R!^Qjm{_4JH-QAJ(C+W2!i:9BdB.QnsL.U\1T\VJk !0KAEQ 5Kb"83 IIe;"JPӆ)d:^U b#q\CGh6,[ c 0K2ǃ.pG:˻ GԉT$ٚmwSGΜ$ ,ټpar̃&Qc1MkUԲR% 䃙W'sy<%LBIhUH 5`InZU\u]rj˔6֒jL&p ,BT+\)HC-t]Be A\q nvXL .I<B$#\GZmĒ\"Fbr\6b!^$W UE^[L9H7' sC]r^TGlRlcGU1g5H#(㈍, 6JԳ7H`9ɸppFLAAJrD3#aH(ŬK%Ȣ#&-׻ffԠn]f`bҥP_6eg5L^i̜(1$Y"S&%BH"SB&Ha8LQAl6LJh x #E{BP"D?a8 {A>0:LO>` Y t|K!>t0]<[(iD2;$ TK$jcOͭc)[G襑 i!#R@SD@RmjE<)쟩ij,Bd1Vx&!Ů)fCEP@ >.da"y.@]5C qvLxBhE]K2<% kEzhN*㸶;^LIhzO!l&9-BnF]>=e[MvΪ%><^~ d{BvHV="T;z~NM Cds߲qʷ09"6MtetՇ TKƒ)0`bdsg/!#M'B K×a~rL >9:۷; y8i)("hi&OմP@Sq0 Y Ԑ3:P*}ݽEM 5dRUȆ =Hu{=$">!OU/Bp!ҞfP@RE&Q%,H5eWwtc$88=O԰W!lq' >>x(c "~c QA%9bCUaFAϘO_kx ^9E}5nůG T<3qmAJ`KeF\HE>H~_!#tqFx{`Lu'>3'pNN| 8w}+T)@) HBK1]ĨAOG!S3/^wPt 'ٰryLI^APv6sxG e|,/ʲ*t`j۵E"Ym Wb( Hقh/!9cBD8k` 8lW7;݆B=q@rJo_WL5G礝zT]UJHRJ̠R"⦪aϧu##D^@D(@  D2R*+IBRTqP t0d;z'24 aY:ۨ$dC@]`,F\T$Aϓ| Y'x 4 BppKu @GΌUa9wOD*zq.AGa|Ny9fp ̡x:ϙ4'==kμ[)xR# }@1U7e]:Vb]kI upS} Eparpv澏n<}0WxW;6>>-@t{wu < f.X?1k}|F.v=c40N$vF"9\G5ОuЭ*4cyW}Mhqr9/Ĺ*\aڡ#@ι䣠dXXx\4TmӁ* ֐wǘ ejCL5jqZ;>S؏[(]K{\ N≫.pPpO!8)/qs/z[:Dq$5PA0GW@&F KL9| տ;9&>CF;#6 EC!4'q ѷCiW6'SLC}="PM$ICCɂ{~^!Q .$`'>vUXa{${^DџI*# FEg5Q)@OR#cqG$|C/A2@dcH@^MSݦI1\N>EYkçG&@"*FC%I}LߟX3wTqϼ }qF<nK4Gf#]EPc1T[h(,G̊!`{W~j|#|{*`rȶH>{x>o^}lSJdpTuwwndx$8]mq2a V& (8ғ/[29! !˶DFtp{}*F&e{;W!yC7f *{GS#y%ĉ&} ׁXާV4mH~ лIb%0c~]>3;UPR'h@p8$%̉Z# g3[n5q耏( )n"""$Wy<uhnZu,꺾L;+=X!6 Cw!| =H1%eޙNLI$wWSdG$țޚDa ow9 %8nۈHդD_d@rt]4@-v_>/a $?w!@qE9S'svh8TQB*.lF3XΆUA1Q lО|:p~^۪Jh`; "ʅBjJq 2^ݘS gdy0=0,-b؊%:Ȋ#-I\1+eo ># /#iqHr]`9pc01O4i x3[(sإ51jDKmӎоVU<q qwv*WԢw5=۰.7]fD@6a(h%luq|:5p'%e5eWuɬH ZD'>,Y V_Hrw},A Xhw'd\yqp C{1NY]8>]6L,<&|Y?Bõtqn)?):+ H)xB:Wxp:d2pL$'1 7Qvg'ذV&[a 4~ޠnhE5´h:/L7QYCЭ(å.| J{z!BbFRi$bYwWʇ`CirZ_023"xq&QDn:[cـ| !Tua#`zQGY!nJ,DZFNM 틇Ȇh!zd:M?>AĴP~$ a[s?ŧgV$9,\_Cz[읞T  yA`f8.~O&##BX98\0GuyaMӊB.u>e_-r ~ GJ竞k'&sC5ۊ>[֩pgq~d=lcs9~g/|1m &.1Jэy2X, frpSQ-$Bd&cm#f4LhJGBuK`CB A!5ie١W1W\::%K@3(P L5n6kТkA(A~H cʐ эWݕN*0N@S(iIjavUx 0)BʁZIq8cN>N9b>#2Dgt >=>x (bkra8Bg#n'_Ӫyuy?(鑒c[Dǥ볕^$bffk4&.iAMev`T̰BQF'@H*-=z#ͪ+ixnn}<ս JvM^ʢh'|?&5::]c )gG$fY^)ZVEΑm1ZPE3soؒo{OHջs'|7(KYCvx:sj=n&Șhe,]\9ҷ*c&!6lo뢐?MORg$`l5ݻൣ=~7tqvu[$I{ݲQ̸1&@dHB^ E6ɤ M"Eef(%ZZĕmA+}wK+Nt1(5 g×˿P9NM`aI6sWK* g}ps [-w?/΄MLJDeL`yi_eT5^eQY~*|3t % &&[uV TМ+{gs9CJR 0BaLiMJ%*}u)M=ʓj8 I)9 $_چNa#BZS;=kpY\P5 M\ sW !R̯~D( 9w1H [FK)Mު<5;G;/`}Cw(Em9. #Lf^*%ǾY.7YXt?$}5]ZXlBpJaM!tŬKmPCUETUM!rCXb|/ xa5DLHi(4ut'ø7 EALU$71 UH䅒J`Lw)B ([ң4)CT ҆)oru5ЄJNIs{'8eZp#}siǐƗ**ZIJ]&I19._ڭ~;mG_QrhJ{ (13t0f),H1[dX푋b#6.bE&36, )tƊ;(vyØ9ue`v 檪b]eW|`ikSX,႔?q;>gJp2`Ş:5P$QU#nSۖfFBlt81/܇?G望Z!@aYQ\g;^,[_ χXEs5V,QgF0}@{ɳcm,TRn G~{+2vy{wAӥG* vqMrl+.Y&D:9dd}%<"S )2#%FA''`ƪATS40Ҿ״]!pY\tjA!$1Pd ,Rh- z" +:ٕȗc*IB'Gp%b"yhH.`pP[u4Tbq!"9gh ,8#l7XC,BJKڀU%2 u #BA:"۟? z'~$S1$jb#A7^FwíDŬG|.ST}%fOQbGV Ơib>|r esz?Y #ۼŃ[O{Uq_tN}`Z!MRQBP&)Hih"QddJ[߆_~ f>d=\_ɾ5Pַ!߂H[u(șqq^y|@JiT Th ߊlWGn4>21E9V!hz2e%I"hJY*dDJhpPU_$ twՎilSd͐Agz֐&wnUE3H|%ns:qgaH&5,}C%t  1•N()na;skimNczc5ni4 4.D\QJ#WX 1bbBqF-*[1 %% 9 ,8_'(J(R AMy\1tbHEI@;ZTe "{$[>CwwS=JVΊ,؁߫b Xm =3;MfΡR}R+!_i( Қ9"uM PU~ù'=xd;8@8뇼\7w&H#fi7h[\~8_z[,ON+^%@h$^gƒ9%B5#zE3$a2@ $tҍ\bX2Hv[=H<v1YBc Ͻ]AbN0l \K#s~b vzB Hۃhi3AW̧|aiw. +%z~MWr"nh7 /*ILR z|2s}hݯl;+0>Խ!lL CO?Bki؁/@[@j#Tr׉qʫlICO5BRx_ddyҕˍ0H`}u`,b[ %=XvΦ blq5#K%&z>3{DyD99aαR5)%#y~NHm(0/X{;^fΌKNѱhQ͈T2l [Bar0(&?;Z7H3Jcݔ-BVӈ3kni< UDCCV9FYB/e[?4sBQl4`ȷ|ȩu xqp"R9QQ #rWG'~kԝ(xɰSW羽-:#[M` %HAJE Sv )Jy~JtA!~$DDudCAA>1([8dD'l|^ QsWVc0uƬjp|E`a:,+n2H9z( G踘JW@A*JI(ilnn4l-r݁&>9pD/S1u "t]=f5sk1s-6 ؒ)3o0@N `4)@@-73d %Hjg2پ܁ƾQ<~Jlj"'2O3p /\fAgDk( ![XN Ci38\JѼ`ށBj@Iɏy,U'ЖYsqL ``aBYu#ݱ.01$"Su2^АjTTHHHe# 6 %eEP+ hH/h@>r`sS_9z @.h\D[sNSPP ,<9胺 beYȉ"^Sܼ0/PU PfG>+kxL6WDȎߝ |O-#;f։pV1j'@ B%Ɏ+U DoE2@{Q—!x:L 3ޜ &|y/P =f]#HfYU 39i.-d3Jf NPx% _4mPޮ1"4тS _{Ia2V+ b}&٥$+oyx+w͌)b8ظB}a&% g՝N8! g@U?I+yIEEtXHLY.*E eԂ`YY!1|ɰk=-;Ȧ-&a-@r1{j4B 6uA <.NAZ^YF 3Y$;fx", '[#b3bw$8#)0ſ(cKŢ)"01<8LI}faKe3 cbP`'DmÈ Oτ0nVߌ \bdeko5EdAk2:Nib:B㴌Z q\@dNh1` `Af E87\=C#0`uX!o7j$IJk O`9hNآd&mDl4#Rl1G}4K dY2g]RO68@˻0fvoU:63,T޳D24AK(9GRv{R/=̊8@u>sQӚ1\dh7X`8&Giu00,LV:Z `5h₪|31ECzŽ4AjJDi6/08r%- q2"yׄzoT`|X/姮A]ܘCW@LsAȃ*aAP{NjkQt9*~%ʼS:X ɝej"b28+e N>-üTB~ԂCD8p G݇ b;H3;]@ŌN#fō:aX SK4>yRA6>CMc6xk̼JQw%q;gGRdY1GW @d)^n#nsIǒ+ _i÷N:Y4aFvg@'B ن,xj+l8"Imʢ9[N =k B[uN˜ \ =n.s9ĀN.*垽zӳ 0ET|w#8OZC=p߇lkCۑ3!-Ķ{qM.)VnjV3(T6,aQܭ0|>TEgYr0 X+H6E)<8+ÈKz v X}`# 49`nqL!/K'tvK8t!npgof 4gK{]d!9JpG\XP*ZH!٠N-&(08͸x8!Xaz̃XFHw 85UxtNc!*Y[h(p fȐeF݆r7` f0EJr@6 ktjSVaaU "Ύ+XШL,wEq It!orD3?,'1fibqGt/ lB!NF]R[L!A-L, 6in$~޶l[ ܳ}Uh=92鞜t<8{ /t9U#"qОDe3VvlA20jD" D `|.򀓷* /I#P=DG9]Xɓ gSqTqlYn=D9G=BAq:Νrs:U9kх6*I˰磙p_B`AYEĿ7o{:phn'iOk4I=ܚpM%P1"J@'B:).4 G"1ɮHga:|V*PL>ֱB8s:7qT9 rXfyqEcoq;0^^b YtQOڍB3é 籬kz=$UCy滉0-C {MI.\vn1#W]pk0W/ꔡC ÂH,EH `H!v`0400zlc,!8cf`uu\5[:(H٭|`m^gvDa-XNVB~KD+\ Vp8 Nɾ *iQ" SZyt3d*3Φ4=̌C.EWZir|kHwv&'SZ"MZx}ނ'M㙊l \"yS&]lnURRm'(-ؗi9[h9k ^J!V\i9@Zmw<. wxGQ o>8ߙFv,akŰ:f`3#Nmƹ,3;id&VfV|¶am"0 d }),ȓ 7 ,WM&j}3ڳg,h ʣq3!V}}鉏1$ &a0uhP&1jkW@ tXG,r1@AW!fBf 3˚/{0w:`tPH,r]1Y=Lz4Y32]P]t;4&Qg]qF@$$bSggUg֛q>?PdO2~'t3r"p/o)uSH^'G~OpguH4%K +J""rhH""E @l'fC}ןQ=p#$ FI$APN;mP}} $ϧ.{GiJ!YIAz !LI3X,leSF@Þj6ijʁJQ/+q}a!FJu4pCHV +vAyt풹q*rbbR6ٞ97 wAO2L)^ť˘EΉلWQ&]HFDʖYRuʵK-2$!5 VAADpTAf fJB$%84s;M<5A&Se\if(l1ҷ.p4c$Pbc W\,#f܍dbA8`Q:H$A ܑQ8Ǿ\Q@\s63wkNhɔ7Q'>;; *L CO1sTCTD0 b:N(,Niϯ ۥgCwJ^lЀPTXQF, T5Z o.$1s%Zsqd =#fyѷ՞NIӔ'$;glAGIPM fAãLpVCHiY(&0I b-6 ސHQ,/6qe5(9mF^ E j!^5O.Úpڶz ɉduWq/=sJqonp/3ngMo&C s07s<"Ѥ<-`62tL̩QA@>\*7ٍ rl*J=Coh)p6%U$I ])6`ji{3/9piofm 2!(X) :2hͫ{B* hhn3jzIW$qK3>/K=ʃw5sâS۾bzqy`t"lDmӇP,eD^n49S#)Ɲ'%-ɓwQ2(93 ݡv- Ź ,GeڔBv-3Lh'czq^˾UL3q3W[\ui +$'Ra+h~hpCb-̤VMCh#lN#j^԰s E* dᮦ`:3[s^VN}I4ǿhO;<<cmI,SWs$E4T&iP_' H%M \n&_ߥZX+$LT90$a+'M7s8 {H@ȋXfP,BH!*vDig,T2Q+kǥP"5˓I*sB& > Hp&9H~mƦ\1ʃԀR4B'@Q)(FJA!B~ G 4GCP +J%Pu P+JSZplXO($FJG{:i U)AiJ(J(^SB*kHu((u/PhQ(T r(@yH%W@=á:|Dj(JŲAIށh@O R *ZA@)Pcd3/@+܍8KIyɮh6Wr6cg!*TF}<[nZiӑP] 91y`+ & u^sG}WJ*, q"r Iu5Laep F9@XM Ԃn; }qIP2ΎދT^Uk!IM4{bnL:¸QTCRIrbBhƖf_֜,$T e; Bsyp㣜}18 G)A3zftl̑9iHg$pă4oĂmrF`FOs,:8+ͤr&UH!%G6ZKqg06}` mS2sP+[!  bAp*X($AlCol9-~%F,+vAdd6ŴQk]sAC!I+at\\^Svc"vs%($`Q n7$tHm,! bN9gA"c 2[xY H !dB&HBdq1$[Id,X!#$X##&DlӜ-5%Ro;18T6" sk87$XĎVl4*tH!bJ9 ɒuO-Ǎ*`J1X[Eni BDUufc#먯f#6hҹ:MBAI[3$CDWTKn*#s,,fj\1dn.v-k#z9#G7H|}VpnnB1PFw;kcمb HA2" s w:\1G ER.֘ d^Lh HJ,ox/u#߼onIxT.p.Pk,ed!aUKWRL%tdmw p aZ۶@(XH: +)w }ZC NǖiH"t!E@w_Y@M`a]De@Q5048 H$_:z~0抡*pmX-U"OU(C0:ZE9(@:NJiyx0 yt=H/r$ eNJS@0P+G臒-)CH#H A9! ?=V'Ju|dóŐ =:-(e\I6..R=}&DzA6A L qcvI{H@rs 3 H+BzģqKPAA ~n"*(ޡ$ON*NB19]@uwO,!ۏ&2jP|w |xIǐ 6:>^TEuS .-jn7/{; />9R3/δg>q,b4ljfj9 L4E< #]Р9-CC qRZ2q 6a"қ;),4l<ngQOsD?VHU"7ɬefPL DUT@"c%[6{:۸ر^X`Ā(@+Z(X$:Y(6 ?_=}EFBJI?v{EJ 'Xm@2dmңޜ Ђ @QP@UU˟ƜVݹM#KHAAM -P3/4GtP;GCJT/ۢ[eԡ `Yå9jǿUȇT Ieg:%=st<#Gλ 34ٝ6^fQ OJ^]X`|KX9:4*kK " WD7^@dv_cM7)5ٸ)vӧ8n翷"!R1*{qo3|O|݂)mA$Y(@(B:P) SwGܠE=<柨E_(";wד<8|b@N (~o&QМ| 4O:L6P;@Fy;9 ;і 0ԕ(4DHPdb@ehC`}~S!"{wWL6pTu.]zGGA8rnHC 0g(d@F :I =0?%=ۜ~gt cA}~( $ "T)BbBBI|N$x'}4j(~(")h*TRD-ݹ2T2 I?;1G eC߆1F-[c9EMnQp$<=0frMCH!=B^z<-1P,+J"HRbRJu /MCJ;4hBPHu:"@?Ќ)I]d5j^M( k\IECCk-|b(lq,r@Մڐ&>d_I~9!D;䧈FFmX?}!(!"E j-dZN(7n|hbV$z(1: o |}:9"z{U#Za6ϱ?0&ϡ:d?_Pp%SYBH$\:.İsO 0h5,e޸}9t}M&>t܋&zyj?xZF UdcB^y/;9Mve:pLc~(',E(,I Xj1Zlfs ҲO%NUs!(k1qsɊ2 T: h5*LӬDltSAUwHB!BRUCI9}qPXe o#b}ᦤ"( ib(v}'Y=A^Nu"ML=f 4wNs$XWEB H%cHv22xonhvdWbwݳt\$Bxqo2 RB&(i)>"SbgLg*ebXזY:LabRT1`c3퐶69%a!ry'JJ鿆 [71!hRT}ΧH"Z@(bmeD}-X,,SfseO I@m@}9gGm,?dl?5 }p2!>^h@*)9TDtys-4UPKxˁHrU@O7nEq+܅UӮ#DVn3*pO9[d¤E0C֎e"t.bsbdAt6GvM,햛җ \;F`aVᨳ,6reQ5 MD+9+ppI3 Clm;!".\#aֈݙU-]Ƥ] D8)Αr+G;qJV6;$l)}:fh 02"*b_{DP]F C0RM 2K0ϳS0堤>SZ 6SxY^894pԕw lD[9.]jI" -aa'6JM="묦EAY ^"] ^P 0@ R8>_`Y2ULZaPݾ/D׺,B&4͗p扳e`@ ~[O.$D 񀮂 cD:6-MZN碏'+Wٌ^eB|{8Y/RP/ 0SǪ`j<G ZBu/4)mO^hMUۯA) "&)X1QC 2fi (p`2E$ɿ9Q53>UTRDДĉ@#)M"O}a:pV h BJwiťgBHY(=Q93Ӌa>?j"x*iŠdA(G$<Í n%DA-D':CKb8+9Hdd1E`2lnaqK`Xma{AYQ+fyS mS XFAf osx,$KB"悁CH'=2uTq o11csnw\bҚRT) Do!ы` )OH}W̢%}䡾WY "$=$}f*&6|@;oNQp ~7Y?uMbq" H ?2y9Dbœ4UWfٰ+X`XC|~CGZppytyhD| 5ZFUbY ؝[\Ag[[+ H+[sɐfehi?T&ps h]0Ȥц\r iT`hQbmi<5e檑mx^ԡ,헵ΊsN62iԙ |9$M}C6z^_3:,P%0<+tcX\7;=MJ ]0ayd!!IK@@ "\ 1L'|$~inzqS0rŒjO=x{SHދ66h! B`V (Hbw:$)PVJVn{JF>>} ,6A wW14>m`pVL[> :p"H /Ցʤ տ.+2,qb%qo$B( (ǵɣ`o;/(i UE`l[UH| ut˔";]]]UE5df/ЭNK҇=/2 I a'ȃö$k7ѐ)2\meBo_ F.?qR4n"N{Kw{J8{;P^Y3~daap(bAm ée>ibB?L(ϵQ,$sЧ*̹8&T/8 peanu3t; p:KQCOk,nSSJ6æ}8&plLcQfF YU^" 'z"~(Zeح:"J\券 "4C.d#:H󰼎g2Q@TKɹ%d]f*S5Bf)IPХ%*iA:c|e͎2XcM#۾NRlB_WuqH;>wOz^BmrN ā^blu3Ӽ*|A-Do{8ȟb  &!қBNdEltdf#d>BD=E^) Ռn# ޔMcspP"r\LbL[J䋒*=Ndȧn_9lnH6vbb9&op|K1\& y SeұOv\~CQ#w};92g>i0[P:Ki#/ۼ! E-}fpf}ɩ\a2W6فs2<kn a0ՃC|SD6,ͷvr@=m0 g@svs($}3nI r+P(*2}MaBWЎ 'bU, srĵݏ?:-5~JB@''뻐=2 g" }y$,3q}Q\6iY땢?6dI~o]_xXyy@dqgu1$ T@3(5b*+(vX1ygVTؘp۽X(ߺu`|UJekրPy~ ˻UoyљWސ|$$_z$ D,o cQ.j@h@7 B{Gc37i08:Bm]Rc|c+HLX9Ƶѥ}箽\>lOӫĉƪ|Ot?%?ؔWB`Bq?fp:rq4$AHcnCV1F hDT?~`{}~AF`>Đ}}^ަ @VXiH:ɗun?xVol 72@>\ju?~pg swqK||."PVIPZ@u`@=4@hOI 4iBOآɕ].HT=#7rSiΟ SC^tcw .NR P9H Ij