1720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org// Copyright 2010 the V8 project authors. All rights reserved.
2720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org// Redistribution and use in source and binary forms, with or without
3720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org// modification, are permitted provided that the following conditions are
4720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org// met:
5720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org//
6720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org//     * Redistributions of source code must retain the above copyright
7720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org//       notice, this list of conditions and the following disclaimer.
8720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org//     * Redistributions in binary form must reproduce the above
9720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org//       copyright notice, this list of conditions and the following
10720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org//       disclaimer in the documentation and/or other materials provided
11720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org//       with the distribution.
12720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org//     * Neither the name of Google Inc. nor the names of its
13720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org//       contributors may be used to endorse or promote products derived
14720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org//       from this software without specific prior written permission.
15720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org//
16720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org
28720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgvar except = "exception";
29720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org
30720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgvar correct_answer_index = 0;
31720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgvar correct_answers = [
32720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false,   true,   true,  false,  false,   true,   true,
33720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false,  false,   true,   true,  false,  false,   true,
34720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true,   true,  false,  false,   true,   true,  false,
35720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true,  false,  false,   true,   true,  false,  false,
36720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,   true, except, except,   true,   true,
37720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,   true, except, except,  false,   true,
38720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,  false, except, except,   true,  false,
39720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,  false, except, except,  false,  false,
40720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false, except, except,  false,  false, except, except,
41720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false, except, except,   true,  false, except, except,
42720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true, except, except,  false,   true, except, except,
43720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true, except, except,   true,   true, except, except,
44720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
45720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
46720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
47720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
48720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false,   true,   true,  false,  false,   true,   true,
49720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false,  false,   true,  false,  false,   true,   true,
50720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true,   true,  false,  false,   true,   true,  false,
51720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true,  false,  false,  false,   true,   true,  false,
52720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,   true, except, except,   true,   true,
53720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,   true, except, except,   true,   true,
54720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,  false, except, except,   true,  false,
55720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,  false, except, except,   true,  false,
56720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false, except, except,  false,  false, except, except,
57720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false, except, except,   true,  false, except, except,
58720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true, except, except,  false,   true, except, except,
59720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true, except, except,   true,   true, except, except,
60720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
61720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
62720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
63720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
64720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false,   true,   true,  false,   true,   true,  false,
65720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false,  false,   true,   true,   true,  false,  false,
66720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true,   true,  false,  false,   true,   true,  false,
67720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true,  false,  false,   true,   true,  false,  false,
68720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,   true, except, except,   true,   true,
69720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,   true, except, except,  false,   true,
70720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,  false, except, except,   true,  false,
71720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,  false, except, except,  false,  false,
72720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false, except, except,  false,   true, except, except,
73720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false, except, except,   true,   true, except, except,
74720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true, except, except,  false,   true, except, except,
75720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true, except, except,   true,   true, except, except,
76720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
77720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
78720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
79720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
80720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false,   true,   true,  false,   true,   true,  false,
81720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false,  false,   true,  false,   true,   true,  false,
82720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true,   true,  false,  false,   true,   true,  false,
83720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true,  false,  false,  false,   true,   true,  false,
84720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,   true, except, except,   true,   true,
85720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,   true, except, except,   true,   true,
86720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,  false, except, except,   true,  false,
87720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,  false, except, except,   true,  false,
88720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false, except, except,  false,   true, except, except,
89720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false, except, except,   true,   true, except, except,
90720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true, except, except,  false,   true, except, except,
91720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true, except, except,   true,   true, except, except,
92720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
93720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
94720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
95720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
96720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false,   true,   true,  false,  false,   true,   true,
97720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false,  false,   true,  false,  false,   true,   true,
98720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true,   true,  false,   true,   true,  false,  false,
99720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true,  false,  false,   true,   true,  false,  false,
100720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,   true, except, except,   true,   true,
101720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,   true, except, except,   true,   true,
102720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,  false, except, except,  false,  false,
103720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,  false, except, except,  false,  false,
104720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false, except, except,  false,  false, except, except,
105720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false, except, except,  false,  false, except, except,
106720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true, except, except,   true,   true, except, except,
107720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true, except, except,   true,   true, except, except,
108720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
109720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
110720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
111720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
112720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false,   true,   true,  false,  false,   true,   true,
113720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false,  false,   true,  false,  false,   true,   true,
114720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true,   true,  false,   true,   true,  false,  false,
115720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true,  false,  false,   true,   true,  false,  false,
116720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,   true, except, except,   true,   true,
117720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,   true, except, except,   true,   true,
118720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,  false, except, except,  false,  false,
119720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,  false, except, except,  false,  false,
120720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false, except, except,  false,  false, except, except,
121720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false, except, except,  false,  false, except, except,
122720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true, except, except,   true,   true, except, except,
123720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true, except, except,   true,   true, except, except,
124720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
125720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
126720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
127720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
128720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false,   true,   true,   true,   true,  false,  false,
129720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false,  false,   true,   true,   true,  false,  false,
130720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true,   true,  false,   true,   true,  false,  false,
131720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true,  false,  false,   true,   true,  false,  false,
132720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,   true, except, except,   true,   true,
133720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,   true, except, except,   true,   true,
134720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,  false, except, except,  false,  false,
135720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,  false, except, except,  false,  false,
136720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false, except, except,   true,   true, except, except,
137720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false, except, except,   true,   true, except, except,
138720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true, except, except,   true,   true, except, except,
139720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true, except, except,   true,   true, except, except,
140720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
141720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
142720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
143720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
144720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false,   true,   true,   true,   true,  false,  false,
145720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false,  false,   true,   true,   true,  false,  false,
146720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true,   true,  false,   true,   true,  false,  false,
147720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true,  false,  false,   true,   true,  false,  false,
148720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,   true, except, except,   true,   true,
149720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,   true, except, except,   true,   true,
150720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,  false, except, except,  false,  false,
151720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,  false, except, except,  false,  false,
152720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false, except, except,   true,   true, except, except,
153720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false, except, except,   true,   true, except, except,
154720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true, except, except,   true,   true, except, except,
155720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true, except, except,   true,   true, except, except,
156720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
157720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
158720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
159720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
160720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false,   true,   true,  false,  false,   true,   true,
161720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false,  false,   true,   true,   true,  false,  false,
162720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true,   true,  false,  false,  false,   true,   true,
163720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true,  false,  false,   true,   true,  false,  false,
164720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,   true, except, except,   true,   true,
165720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,   true, except, except,  false,  false,
166720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,  false, except, except,   true,   true,
167720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,  false, except, except,  false,  false,
168720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false, except, except,  false,  false, except, except,
169720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false, except, except,   true,   true, except, except,
170720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true, except, except,  false,  false, except, except,
171720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true, except, except,   true,   true, except, except,
172720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
173720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
174720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
175720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
176720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false,   true,   true,  false,  false,   true,   true,
177720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false,  false,   true,  false,  false,   true,   true,
178720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true,   true,  false,  false,  false,   true,   true,
179720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true,  false,  false,  false,  false,   true,   true,
180720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,   true, except, except,   true,   true,
181720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,   true, except, except,   true,   true,
182720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,  false, except, except,   true,   true,
183720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,  false, except, except,   true,   true,
184720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false, except, except,  false,  false, except, except,
185720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false, except, except,   true,   true, except, except,
186720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true, except, except,  false,  false, except, except,
187720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true, except, except,   true,   true, except, except,
188720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
189720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
190720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
191720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
192720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false,   true,   true,  false,  false,   true,   true,
193720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false,  false,   true,   true,   true,  false,  false,
194720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true,   true,  false,  false,  false,   true,   true,
195720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true,  false,  false,   true,   true,  false,  false,
196720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,   true, except, except,   true,   true,
197720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,   true, except, except,  false,  false,
198720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,  false, except, except,   true,   true,
199720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,  false, except, except,  false,  false,
200720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false, except, except,  false,  false, except, except,
201720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false, except, except,   true,   true, except, except,
202720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true, except, except,  false,  false, except, except,
203720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true, except, except,   true,   true, except, except,
204720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
205720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
206720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
207720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
208720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false,   true,   true,  false,  false,   true,   true,
209720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false,  false,   true,  false,  false,   true,   true,
210720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true,   true,  false,  false,  false,   true,   true,
211720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true,  false,  false,  false,  false,   true,   true,
212720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,   true, except, except,   true,   true,
213720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,   true, except, except,   true,   true,
214720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,  false, except, except,   true,   true,
215720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,  false, except, except,   true,   true,
216720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false, except, except,  false,  false, except, except,
217720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false, except, except,   true,   true, except, except,
218720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true, except, except,  false,  false, except, except,
219720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true, except, except,   true,   true, except, except,
220720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
221720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
222720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
223720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
224720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false,   true,   true,  false,  false,   true,   true,
225720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false,  false,   true,  false,  false,   true,   true,
226720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true,   true,  false,   true,   true,  false,  false,
227720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true,  false,  false,   true,   true,  false,  false,
228720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,   true, except, except,   true,   true,
229720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,   true, except, except,   true,   true,
230720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,  false, except, except,  false,  false,
231720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,  false, except, except,  false,  false,
232720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false, except, except,  false,  false, except, except,
233720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false, except, except,  false,  false, except, except,
234720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true, except, except,   true,   true, except, except,
235720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true, except, except,   true,   true, except, except,
236720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
237720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
238720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
239720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
240720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false,   true,   true,  false,  false,   true,   true,
241720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false,  false,   true,  false,  false,   true,   true,
242720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true,   true,  false,   true,   true,  false,  false,
243720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true,  false,  false,   true,   true,  false,  false,
244720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,   true, except, except,   true,   true,
245720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,   true, except, except,   true,   true,
246720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,  false, except, except,  false,  false,
247720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,  false, except, except,  false,  false,
248720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false, except, except,  false,  false, except, except,
249720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false, except, except,  false,  false, except, except,
250720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true, except, except,   true,   true, except, except,
251720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true, except, except,   true,   true, except, except,
252720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
253720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
254720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
255720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
256720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false,   true,   true,   true,   true,  false,  false,
257720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false,  false,   true,   true,   true,  false,  false,
258720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true,   true,  false,   true,   true,  false,  false,
259720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true,  false,  false,   true,   true,  false,  false,
260720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,   true, except, except,   true,   true,
261720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,   true, except, except,   true,   true,
262720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,  false, except, except,  false,  false,
263720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,  false, except, except,  false,  false,
264720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false, except, except,   true,   true, except, except,
265720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false, except, except,   true,   true, except, except,
266720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true, except, except,   true,   true, except, except,
267720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true, except, except,   true,   true, except, except,
268720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
269720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
270720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
271720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
272720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false,   true,   true,   true,   true,  false,  false,
273720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false,  false,   true,   true,   true,  false,  false,
274720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true,   true,  false,   true,   true,  false,  false,
275720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true,  false,  false,   true,   true,  false,  false,
276720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,   true, except, except,   true,   true,
277720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,   true, except, except,   true,   true,
278720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,   true,  false, except, except,  false,  false,
279720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except,  false,  false, except, except,  false,  false,
280720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,  false, except, except,   true,   true, except, except,
281720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,  false, except, except,   true,   true, except, except,
282720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org false,   true, except, except,   true,   true, except, except,
283720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  true,   true, except, except,   true,   true, except, except,
284720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
285720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
286720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except,
287720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgexcept, except, except, except, except, except, except, except];
288720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org
289720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgfor (var i = 0; i < 256; i++) {
290720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  Test(i & 1, i & 2, i & 4, i & 8, i & 0x10, i & 0x20, i & 0x40, i & 0x80);
291720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org}
292720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org
293720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org
294720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgfunction InstanceTest(x, func) {
295720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  try {
296720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org    var answer = (x instanceof func);
297720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org    assertEquals(correct_answers[correct_answer_index], answer);
298720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  } catch (e) {
299720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org    assertTrue(/prototype/.test(e));
300720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org    assertEquals(correct_answers[correct_answer_index], except);
301720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  }
302720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  correct_answer_index++;
303720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org}
304720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org
305720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org
306720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.orgfunction Test(a, b, c, d, e, f, g, h) {
307720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  var Foo = function() { }
308720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  var Bar = function() { }
309720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org
310720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  if (c) Foo.prototype = 12;
311720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  if (d) Bar.prototype = 13;
312720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  var x = a ? new Foo() : new Bar();
313720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  var y = b ? new Foo() : new Bar();
314720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  InstanceTest(x, Foo);
315720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  InstanceTest(y, Foo);
316720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  InstanceTest(x, Bar);
317720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  InstanceTest(y, Bar);
318720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  if (e) x.__proto__ = Bar.prototype;
319720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  if (f) y.__proto__ = Foo.prototype;
320720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  if (g) {
321720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org    x.__proto__ = y;
322720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  } else {
323720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org    if (h) y.__proto__ = x
324720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  }
325720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  InstanceTest(x, Foo);
326720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  InstanceTest(y, Foo);
327720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  InstanceTest(x, Bar);
328720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org  InstanceTest(y, Bar);
329720dc0bc17114e33b9b2177fcb6726bda9cabd62sgjesse@chromium.org}
330