summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorMark A. Hershberger <mah@debian.(none)>2009-03-25 00:35:13 -0400
committerMark A. Hershberger <mah@debian.(none)>2009-03-25 00:35:13 -0400
commit0a36161e13484a99ccf69bb38f206462d27cc6d6 (patch)
treed5107db4b7369603ac7c753829e8972ee74949f7 /Zend
parentce7edc9b3c7370f32fec0bc7a8ec3e29ed9a5f61 (diff)
downloadphp-upstream/5.1.2.tar.gz
Imported Upstream version 5.1.2upstream/5.1.2
Diffstat (limited to 'Zend')
-rw-r--r--Zend/LICENSE2
-rw-r--r--Zend/Makefile.am2
-rw-r--r--Zend/Zend.dsp8
-rw-r--r--Zend/ZendTS.dsp8
-rw-r--r--Zend/acconfig.h4
-rw-r--r--Zend/header4
-rwxr-xr-xZend/tests/bug26077.phpt2
-rwxr-xr-xZend/tests/bug26695.phpt25
-rw-r--r--Zend/tests/bug29210.phpt10
-rwxr-xr-xZend/tests/bug29268.phpt26
-rwxr-xr-xZend/tests/bug29523.phpt38
-rwxr-xr-xZend/tests/bug29828.phpt35
-rwxr-xr-xZend/tests/bug30346.phpt48
-rwxr-xr-xZend/tests/bug30856.phpt20
-rwxr-xr-xZend/tests/bug30961.phpt20
-rwxr-xr-xZend/tests/bug31177-2.phpt2
-rwxr-xr-xZend/tests/bug32290.phpt101
-rwxr-xr-xZend/tests/bug32981.phpt34
-rwxr-xr-xZend/tests/bug33312.phpt20
-rwxr-xr-xZend/tests/bug35393.phpt30
-rwxr-xr-xZend/tests/bug35437.phpt27
-rwxr-xr-xZend/tests/bug35470.phpt11
-rwxr-xr-xZend/tests/bug35509.phpt31
-rwxr-xr-xZend/tests/bug35655.phpt25
-rw-r--r--Zend/zend.c19
-rw-r--r--Zend/zend.h14
-rw-r--r--Zend/zend_API.c170
-rw-r--r--Zend/zend_API.h12
-rw-r--r--Zend/zend_alloc.c5
-rw-r--r--Zend/zend_alloc.h5
-rw-r--r--Zend/zend_arg_defs.c4
-rw-r--r--Zend/zend_builtin_functions.c6
-rw-r--r--Zend/zend_builtin_functions.h4
-rw-r--r--Zend/zend_compile.c34
-rw-r--r--Zend/zend_compile.h4
-rw-r--r--Zend/zend_config.nw.h4
-rw-r--r--Zend/zend_config.w32.h4
-rw-r--r--Zend/zend_constants.c4
-rw-r--r--Zend/zend_constants.h4
-rw-r--r--Zend/zend_default_classes.c6
-rw-r--r--Zend/zend_dynamic_array.c4
-rw-r--r--Zend/zend_dynamic_array.h4
-rw-r--r--Zend/zend_errors.h4
-rw-r--r--Zend/zend_exceptions.c9
-rw-r--r--Zend/zend_exceptions.h4
-rw-r--r--Zend/zend_execute.c5
-rw-r--r--Zend/zend_execute.h4
-rw-r--r--Zend/zend_execute_API.c77
-rw-r--r--Zend/zend_extensions.c4
-rw-r--r--Zend/zend_extensions.h4
-rw-r--r--Zend/zend_fast_cache.h4
-rw-r--r--Zend/zend_globals.h9
-rw-r--r--Zend/zend_globals_macros.h4
-rw-r--r--Zend/zend_hash.c4
-rw-r--r--Zend/zend_hash.h10
-rw-r--r--Zend/zend_highlight.c34
-rw-r--r--Zend/zend_highlight.h4
-rw-r--r--Zend/zend_indent.c4
-rw-r--r--Zend/zend_indent.h4
-rw-r--r--Zend/zend_ini.c4
-rw-r--r--Zend/zend_ini.h4
-rw-r--r--Zend/zend_ini_parser.c4
-rw-r--r--Zend/zend_ini_parser.y4
-rw-r--r--Zend/zend_ini_scanner.c4
-rw-r--r--Zend/zend_ini_scanner.h4
-rw-r--r--Zend/zend_ini_scanner.l4
-rwxr-xr-xZend/zend_interfaces.c4
-rwxr-xr-xZend/zend_interfaces.h4
-rw-r--r--Zend/zend_istdiostream.h4
-rwxr-xr-xZend/zend_iterators.c4
-rwxr-xr-xZend/zend_iterators.h4
-rw-r--r--Zend/zend_language_parser.c4
-rw-r--r--Zend/zend_language_parser.y4
-rw-r--r--Zend/zend_language_scanner.c4326
-rw-r--r--Zend/zend_language_scanner.h4
-rw-r--r--Zend/zend_language_scanner.l38
-rw-r--r--Zend/zend_list.c4
-rw-r--r--Zend/zend_list.h4
-rw-r--r--Zend/zend_llist.c4
-rw-r--r--Zend/zend_llist.h4
-rw-r--r--Zend/zend_mm.c4
-rw-r--r--Zend/zend_mm.h4
-rw-r--r--Zend/zend_modules.h4
-rw-r--r--Zend/zend_multibyte.c6
-rw-r--r--Zend/zend_multibyte.h6
-rw-r--r--Zend/zend_multiply.h4
-rw-r--r--Zend/zend_object_handlers.c6
-rw-r--r--Zend/zend_object_handlers.h9
-rw-r--r--Zend/zend_objects.c4
-rw-r--r--Zend/zend_objects.h4
-rw-r--r--Zend/zend_objects_API.c4
-rw-r--r--Zend/zend_objects_API.h4
-rw-r--r--Zend/zend_opcode.c20
-rw-r--r--Zend/zend_operators.c6
-rw-r--r--Zend/zend_operators.h7
-rw-r--r--Zend/zend_ptr_stack.c4
-rw-r--r--Zend/zend_ptr_stack.h4
-rw-r--r--Zend/zend_qsort.c4
-rw-r--r--Zend/zend_qsort.h4
-rw-r--r--Zend/zend_reflection_api.c4061
-rw-r--r--Zend/zend_reflection_api.h39
-rw-r--r--Zend/zend_sprintf.c4
-rw-r--r--Zend/zend_stack.c4
-rw-r--r--Zend/zend_stack.h4
-rw-r--r--Zend/zend_static_allocator.c4
-rw-r--r--Zend/zend_static_allocator.h4
-rw-r--r--Zend/zend_stream.c4
-rw-r--r--Zend/zend_stream.h4
-rw-r--r--Zend/zend_strtod.h4
-rw-r--r--Zend/zend_ts_hash.c4
-rw-r--r--Zend/zend_ts_hash.h4
-rw-r--r--Zend/zend_types.h12
-rw-r--r--Zend/zend_variables.c4
-rw-r--r--Zend/zend_variables.h4
-rw-r--r--Zend/zend_vm.h4
-rw-r--r--Zend/zend_vm_def.h12
-rw-r--r--Zend/zend_vm_execute.h38
-rw-r--r--Zend/zend_vm_execute.skl4
-rw-r--r--Zend/zend_vm_gen.php10
-rw-r--r--Zend/zend_vm_opcodes.h2
120 files changed, 2885 insertions, 6921 deletions
diff --git a/Zend/LICENSE b/Zend/LICENSE
index 67256f196..8acb9af4f 100644
--- a/Zend/LICENSE
+++ b/Zend/LICENSE
@@ -1,6 +1,6 @@
--------------------------------------------------------------------
The Zend Engine License, Version 2.00
-Copyright (c) 1999-2005 Zend Technologies Ltd. All rights reserved.
+Copyright (c) 1999-2006 Zend Technologies Ltd. All rights reserved.
--------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
diff --git a/Zend/Makefile.am b/Zend/Makefile.am
index 42ae4d542..bd55716b3 100644
--- a/Zend/Makefile.am
+++ b/Zend/Makefile.am
@@ -15,7 +15,7 @@ libZend_la_SOURCES=\
zend_list.c zend_indent.c zend_builtin_functions.c zend_sprintf.c \
zend_ini.c zend_qsort.c zend_objects.c zend_object_handlers.c \
zend_objects_API.c zend_ts_hash.c zend_stream.c zend_mm.c \
- zend_default_classes.c zend_reflection_api.c \
+ zend_default_classes.c \
zend_iterators.c zend_interfaces.c zend_exceptions.c \
zend_strtod.c zend_multibyte.c
diff --git a/Zend/Zend.dsp b/Zend/Zend.dsp
index 83791c0c4..93ecdf90b 100644
--- a/Zend/Zend.dsp
+++ b/Zend/Zend.dsp
@@ -227,10 +227,6 @@ SOURCE=.\zend_qsort.c
# End Source File
# Begin Source File
-SOURCE=.\zend_reflection_api.c
-# End Source File
-# Begin Source File
-
SOURCE=.\zend_sprintf.c
# End Source File
# Begin Source File
@@ -407,10 +403,6 @@ SOURCE=.\zend_qsort.h
# End Source File
# Begin Source File
-SOURCE=.\zend_reflection_api.h
-# End Source File
-# Begin Source File
-
SOURCE=.\zend_stack.h
# End Source File
# Begin Source File
diff --git a/Zend/ZendTS.dsp b/Zend/ZendTS.dsp
index 830f97efd..abc6fe766 100644
--- a/Zend/ZendTS.dsp
+++ b/Zend/ZendTS.dsp
@@ -260,10 +260,6 @@ SOURCE=.\zend_qsort.c
# End Source File
# Begin Source File
-SOURCE=.\zend_reflection_api.c
-# End Source File
-# Begin Source File
-
SOURCE=.\zend_sprintf.c
# End Source File
# Begin Source File
@@ -444,10 +440,6 @@ SOURCE=.\zend_qsort.h
# End Source File
# Begin Source File
-SOURCE=.\zend_reflection_api.h
-# End Source File
-# Begin Source File
-
SOURCE=.\zend_stack.h
# End Source File
# Begin Source File
diff --git a/Zend/acconfig.h b/Zend/acconfig.h
index 809b07bef..991153073 100644
--- a/Zend/acconfig.h
+++ b/Zend/acconfig.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: acconfig.h,v 1.40 2005/08/03 13:30:45 sniper Exp $ */
+/* $Id: acconfig.h,v 1.40.2.1 2006/01/04 23:53:03 andi Exp $ */
#define ZEND_API
#define ZEND_DLEXPORT
diff --git a/Zend/header b/Zend/header
index 2f8acff51..4dd603ff9 100644
--- a/Zend/header
+++ b/Zend/header
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,4 +16,4 @@
+----------------------------------------------------------------------+
*/
-/* $Id: header,v 1.1 2005/01/10 14:57:35 sniper Exp $ */
+/* $Id: header,v 1.1.2.1 2006/01/04 23:53:03 andi Exp $ */
diff --git a/Zend/tests/bug26077.phpt b/Zend/tests/bug26077.phpt
index 16d9b5af9..ea2a80273 100755
--- a/Zend/tests/bug26077.phpt
+++ b/Zend/tests/bug26077.phpt
@@ -1,5 +1,5 @@
--TEST--
-Bug #26077 Memory leaks when creating an instance of an object
+Bug #26077 (Memory leaks when creating an instance of an object)
--FILE--
<?php
class foo {} new foo();
diff --git a/Zend/tests/bug26695.phpt b/Zend/tests/bug26695.phpt
deleted file mode 100755
index 38e6607c3..000000000
--- a/Zend/tests/bug26695.phpt
+++ /dev/null
@@ -1,25 +0,0 @@
---TEST--
-Bug #26695 (Reflection API does not recognize mixed-case class hints)
---FILE--
-<?php
-
-class Foo {
-}
-
-class Bar {
- function demo(foo $f) {
- }
-}
-
-$class = new ReflectionClass('bar');
-$methods = $class->getMethods();
-$params = $methods[0]->getParameters();
-
-$class = $params[0]->getClass();
-
-var_dump($class->getName());
-?>
-===DONE===
---EXPECT--
-string(3) "Foo"
-===DONE=== \ No newline at end of file
diff --git a/Zend/tests/bug29210.phpt b/Zend/tests/bug29210.phpt
index f43ff57f5..d9a931fda 100644
--- a/Zend/tests/bug29210.phpt
+++ b/Zend/tests/bug29210.phpt
@@ -89,10 +89,14 @@ if (is_callable(array('test_class','test_func4'))) {
$object = new foo();
$object->test();
?>
---EXPECT--
+--EXPECTF--
test_func1
test_func2
+
+Strict Standards: Non-static method test_class::test_func3() cannot be called statically, assuming $this from compatible context test_class in %sbug29210.php on line %d
test_func3
+
+Strict Standards: Non-static method test_class::test_func4() cannot be called statically, assuming $this from compatible context test_class in %sbug29210.php on line %d
test_func4
test_func1 isn't callable from outside
test_func2 isn't callable from outside
@@ -100,5 +104,9 @@ test_func3 isn't callable from outside
test_func4 isn't callable from outside
test_func1 isn't callable from child
test_func2
+
+Strict Standards: Non-static method test_class::test_func3() cannot be called statically, assuming $this from compatible context foo in %sbug29210.php on line %d
test_func3 isn't callable from child
+
+Strict Standards: Non-static method test_class::test_func4() cannot be called statically, assuming $this from compatible context foo in %sbug29210.php on line %d
test_func4
diff --git a/Zend/tests/bug29268.phpt b/Zend/tests/bug29268.phpt
deleted file mode 100755
index 335ee7337..000000000
--- a/Zend/tests/bug29268.phpt
+++ /dev/null
@@ -1,26 +0,0 @@
---TEST--
-Bug #29268 (__autoload() not called with reflectionProperty->getClass())
---FILE--
-<?php
-function __autoload($classname) {
- echo "__autoload($classname)\n";
- eval("class $classname {}");
-}
-
-class B{
- public function doit(A $a){
- }
-}
-
-$ref = new reflectionMethod('B','doit');
-$parameters = $ref->getParameters();
-foreach($parameters as $parameter){
- $class = $parameter->getClass();
- echo $class->name."\n";
-}
-echo "ok\n";
-?>
---EXPECT--
-__autoload(A)
-A
-ok
diff --git a/Zend/tests/bug29523.phpt b/Zend/tests/bug29523.phpt
deleted file mode 100755
index 4eb357cc2..000000000
--- a/Zend/tests/bug29523.phpt
+++ /dev/null
@@ -1,38 +0,0 @@
---TEST--
-Bug #29523 (ReflectionParameter::isOptional() is incorrect)
---FILE--
-<?php
-
-class TestClass
-{
-}
-
-function optionalTest(TestClass $a, TestClass $b, $c = 3)
-{
-}
-
-$function = new ReflectionFunction('optionalTest');
-$numberOfNotOptionalParameters = 0;
-$numberOfOptionalParameters = 0;
-foreach($function->getParameters() as $parameter)
-{
- var_dump($parameter->isOptional());
- if ($parameter->isOptional())
- {
- ++$numberOfOptionalParameters;
- }
- else
- {
- ++$numberOfNotOptionalParameters;
- }
-}
-var_dump($function->getNumberOfRequiredParameters());
-var_dump($numberOfNotOptionalParameters);
-
-?>
---EXPECT--
-bool(false)
-bool(false)
-bool(true)
-int(2)
-int(2)
diff --git a/Zend/tests/bug29828.phpt b/Zend/tests/bug29828.phpt
deleted file mode 100755
index e1c9bbd36..000000000
--- a/Zend/tests/bug29828.phpt
+++ /dev/null
@@ -1,35 +0,0 @@
---TEST--
-Bug #29828 (Interfaces no longer work)
---FILE--
-<?php
-
-interface Bla
-{
- function bla();
-}
-
-class BlaMore implements Bla
-{
- function bla()
- {
- echo "Hello\n";
- }
-}
-
-$r = new ReflectionClass('BlaMore');
-
-var_dump(count($r->getMethods()));
-var_dump($r->getMethod('bla')->isConstructor());
-var_dump($r->getMethod('bla')->isAbstract());
-
-$o=new BlaMore;
-$o->bla();
-
-?>
-===DONE===
---EXPECT--
-int(1)
-bool(false)
-bool(false)
-Hello
-===DONE===
diff --git a/Zend/tests/bug30346.phpt b/Zend/tests/bug30346.phpt
index f92c45c79..30f36fbde 100755
--- a/Zend/tests/bug30346.phpt
+++ b/Zend/tests/bug30346.phpt
@@ -1,24 +1,24 @@
---TEST--
-Bug 30346 (arrayAcces & using $this)
---FILE--
-<?php
-
-class Test implements ArrayAccess
-{
- public function __construct() { }
- public function offsetExists( $offset ) { return false; }
- public function offsetGet( $offset ) { return $offset; }
- public function offsetSet( $offset, $data ) { }
- public function offsetUnset( $offset ) { }
-}
-
-$post = new Test;
-$id = 'page';
-echo $post[$id.'_show'];
-echo "\n";
-
-?>
-===DONE===
---EXPECT--
-page_show
-===DONE=== \ No newline at end of file
+--TEST--
+Bug #30346 (arrayAccess and using $this)
+--FILE--
+<?php
+
+class Test implements ArrayAccess
+{
+ public function __construct() { }
+ public function offsetExists( $offset ) { return false; }
+ public function offsetGet( $offset ) { return $offset; }
+ public function offsetSet( $offset, $data ) { }
+ public function offsetUnset( $offset ) { }
+}
+
+$post = new Test;
+$id = 'page';
+echo $post[$id.'_show'];
+echo "\n";
+
+?>
+===DONE===
+--EXPECT--
+page_show
+===DONE===
diff --git a/Zend/tests/bug30856.phpt b/Zend/tests/bug30856.phpt
deleted file mode 100755
index 6c6d3171a..000000000
--- a/Zend/tests/bug30856.phpt
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-Bug #30856 (ReflectionClass::getStaticProperties segfaults)
---FILE--
-<?php
-class bogus {
- const C = 'test';
- static $a = bogus::C;
-}
-
-$class = new ReflectionClass('bogus');
-
-var_dump($class->getStaticProperties());
-?>
-===DONE===
---EXPECT--
-array(1) {
- ["a"]=>
- string(4) "test"
-}
-===DONE===
diff --git a/Zend/tests/bug30961.phpt b/Zend/tests/bug30961.phpt
deleted file mode 100755
index 67964343e..000000000
--- a/Zend/tests/bug30961.phpt
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-Bug #30961 (Wrong linenumber in ReflectionClass getStartLine())
---FILE--
-<?php
- class a
- {
- }
-
- class b extends a
- {
- }
-
- $ref1 = new ReflectionClass('a');
- $ref2 = new ReflectionClass('b');
- echo $ref1->getStartLine() . "\n";
- echo $ref2->getStartLine() . "\n";
-?>
---EXPECT--
-2
-6
diff --git a/Zend/tests/bug31177-2.phpt b/Zend/tests/bug31177-2.phpt
index b18258805..a2d922c91 100755
--- a/Zend/tests/bug31177-2.phpt
+++ b/Zend/tests/bug31177-2.phpt
@@ -1,5 +1,5 @@
--TEST--
-Bug #31177 (menory corruption because of incorrect refcounting)
+Bug #31177 (memory corruption because of incorrect refcounting)
--FILE--
<?php
class foo {
diff --git a/Zend/tests/bug32290.phpt b/Zend/tests/bug32290.phpt
index f754275cc..c03808377 100755
--- a/Zend/tests/bug32290.phpt
+++ b/Zend/tests/bug32290.phpt
@@ -7,7 +7,31 @@ class TestA
{
public function doSomething($i)
{
- echo __METHOD__ . "($this)\n";
+ echo __METHOD__ . "($i)\n";
+ return --$i;
+ }
+
+ public function doSomethingThis($i)
+ {
+ echo __METHOD__ . "($i)\n";
+ return --$i;
+ }
+
+ public function doSomethingParent($i)
+ {
+ echo __METHOD__ . "($i)\n";
+ return --$i;
+ }
+
+ public function doSomethingParentThis($i)
+ {
+ echo __METHOD__ . "($i)\n";
+ return --$i;
+ }
+
+ public static function doSomethingStatic($i)
+ {
+ echo __METHOD__ . "($i)\n";
return --$i;
}
}
@@ -16,20 +40,87 @@ class TestB extends TestA
{
public function doSomething($i)
{
- echo __METHOD__ . "($this)\n";
+ echo __METHOD__ . "($i)\n";
+ $i++;
+ if ($i >= 5) return 5;
+ return call_user_func_array(array("TestA", "doSomething"), array($i));
+ }
+
+ public function doSomethingThis($i)
+ {
+ echo __METHOD__ . "($i)\n";
+ $i++;
+ if ($i >= 5) return 5;
+ return call_user_func_array(array($this, "TestA::doSomethingThis"), array($i));
+ }
+
+ public function doSomethingParent($i)
+ {
+ echo __METHOD__ . "($i)\n";
+ $i++;
+ if ($i >= 5) return 5;
+ return call_user_func_array(array("parent", "doSomethingParent"), array($i));
+ }
+
+ public function doSomethingParentThis($i)
+ {
+ echo __METHOD__ . "($i)\n";
$i++;
if ($i >= 5) return 5;
- return call_user_func_array(array("TestA","doSomething"), array($i));
+ return call_user_func_array(array($this, "parent::doSomethingParentThis"), array($i));
+ }
+
+ public static function doSomethingStatic($i)
+ {
+ echo __METHOD__ . "($i)\n";
+ $i++;
+ if ($i >= 5) return 5;
+ return call_user_func_array(array("TestA", "doSomethingStatic"), array($i));
}
}
$x = new TestB();
+echo "===A===\n";
var_dump($x->doSomething(1));
+echo "\n===B===\n";
+var_dump($x->doSomethingThis(1));
+echo "\n===C===\n";
+var_dump($x->doSomethingParent(1));
+echo "\n===D===\n";
+var_dump($x->doSomethingParentThis(1));
+echo "\n===E===\n";
+var_dump($x->doSomethingStatic(1));
?>
===DONE===
+<?php exit(0); ?>
--EXPECTF--
-TestB::doSomething(Object id #%d)
-TestA::doSomething(Object id #%d)
+===A===
+TestB::doSomething(1)
+
+Strict Standards: Non-static method TestA::doSomething() cannot be called statically, assuming $this from compatible context TestB in %sbug32290.php on line %d
+TestA::doSomething(2)
+int(1)
+
+===B===
+TestB::doSomethingThis(1)
+TestA::doSomethingThis(2)
+int(1)
+
+===C===
+TestB::doSomethingParent(1)
+
+Strict Standards: Non-static method TestA::doSomethingParent() cannot be called statically, assuming $this from compatible context TestB in %sbug32290.php on line %d
+TestA::doSomethingParent(2)
+int(1)
+
+===D===
+TestB::doSomethingParentThis(1)
+TestA::doSomethingParentThis(2)
+int(1)
+
+===E===
+TestB::doSomethingStatic(1)
+TestA::doSomethingStatic(2)
int(1)
===DONE===
diff --git a/Zend/tests/bug32981.phpt b/Zend/tests/bug32981.phpt
deleted file mode 100755
index 1f89ca682..000000000
--- a/Zend/tests/bug32981.phpt
+++ /dev/null
@@ -1,34 +0,0 @@
---TEST--
-Bug #32981 (ReflectionMethod::getStaticVariables() causes apache2.0.54 seg fault)
---FILE--
-<?php
-
-class TestClass
-{
- static function test()
- {
- static $enabled = true;
- }
-}
-
-$class = new ReflectionClass('TestClass');
-foreach ($class->getMethods() as $method)
-{
- var_dump($method->getName());
- $arr_static_vars[] = $method->getStaticVariables();
-}
-
-var_dump($arr_static_vars);
-
-?>
-===DONE===
---EXPECT--
-string(4) "test"
-array(1) {
- [0]=>
- array(1) {
- ["enabled"]=>
- bool(true)
- }
-}
-===DONE===
diff --git a/Zend/tests/bug33312.phpt b/Zend/tests/bug33312.phpt
deleted file mode 100755
index 3784b56a6..000000000
--- a/Zend/tests/bug33312.phpt
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-Bug #33312 (ReflectionParameter methods do not work correctly)
---FILE--
-<?php
-class Foo {
- public function bar(Foo $foo, $bar = 'bar') {
- }
-}
-
-$class = new ReflectionClass('Foo');
-$method = $class->getMethod('bar');
-
-foreach ($method->getParameters() as $parameter) {
- if ($parameter->isDefaultValueAvailable()) {
- print $parameter->getDefaultValue()."\n";
- }
-}
-?>
---EXPECT--
-bar
diff --git a/Zend/tests/bug35393.phpt b/Zend/tests/bug35393.phpt
new file mode 100755
index 000000000..059621c9f
--- /dev/null
+++ b/Zend/tests/bug35393.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Bug #35393 (changing static protected members from outside the class)
+--INI--
+error_reporting=4095
+--FILE--
+<?php
+class ObjectPath
+{
+ static protected $type = array(0=>'main');
+
+ static function getType()
+ {
+ return self::$type;
+ }
+}
+print_r(ObjectPath::getType());
+$object_type = array_pop((ObjectPath::getType()));
+print_r(ObjectPath::getType());
+?>
+--EXPECTF--
+Array
+(
+ [0] => main
+)
+
+Strict Standards: Only variables should be passed by reference in %sbug35393.php on line 12
+Array
+(
+ [0] => main
+)
diff --git a/Zend/tests/bug35437.phpt b/Zend/tests/bug35437.phpt
new file mode 100755
index 000000000..7d6241ba5
--- /dev/null
+++ b/Zend/tests/bug35437.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Bug #35437 Segfault or Invalid Opcode 137/1/4
+--FILE--
+<?php
+function err2exception($errno, $errstr)
+{
+ throw new Exception("Error occuried: " . $errstr);
+}
+
+set_error_handler('err2exception');
+
+class TestClass
+{
+ function testMethod()
+ {
+ $GLOBALS['t'] = new stdClass;
+ }
+}
+
+try {
+ TestClass::testMethod();
+} catch (Exception $e) {
+ echo "Catched: ".$e->getMessage()."\n";
+}
+?>
+--EXPECT--
+Catched: Error occuried: Non-static method TestClass::testMethod() should not be called statically
diff --git a/Zend/tests/bug35470.phpt b/Zend/tests/bug35470.phpt
new file mode 100755
index 000000000..3d708862c
--- /dev/null
+++ b/Zend/tests/bug35470.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Bug #35470 (Assigning global using variable name from array doesn't function)
+--FILE--
+<?php
+$x = array("test", "55");
+global ${$x[0]};
+${$x[0]} = $x[1];
+echo "Test: $test\n";;
+?>
+--EXPECT--
+Test: 55
diff --git a/Zend/tests/bug35509.phpt b/Zend/tests/bug35509.phpt
new file mode 100755
index 000000000..6cb54c03e
--- /dev/null
+++ b/Zend/tests/bug35509.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Bug #35509 (string constant as array key has different behavior inside object)
+--FILE--
+<?php
+class mytest
+{
+ const classConstant = '01';
+
+ private $classArray = array( mytest::classConstant => 'value' );
+
+ public function __construct()
+ {
+ print_r($this->classArray);
+ }
+}
+
+$classtest = new mytest();
+
+define( "normalConstant", '01' );
+$normalArray = array( normalConstant => 'value' );
+print_r($normalArray);
+?>
+--EXPECT--
+Array
+(
+ [01] => value
+)
+Array
+(
+ [01] => value
+)
diff --git a/Zend/tests/bug35655.phpt b/Zend/tests/bug35655.phpt
new file mode 100755
index 000000000..e35764a60
--- /dev/null
+++ b/Zend/tests/bug35655.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Bug #35655 (whitespace following end of heredoc is lost)
+--INI--
+highlight.string = #DD0000
+highlight.comment = #FF8000
+highlight.keyword = #007700
+highlight.bg = #FFFFFF
+highlight.default = #0000BB
+highlight.html = #000000
+--FILE--
+<?php
+$code = '
+<?php
+ $x = <<<EOT
+some string
+EOT
+ $y = 2;
+?>';
+highlight_string($code);
+?>
+--EXPECT--
+<code><span style="color: #000000">
+<br /><span style="color: #0000BB">&lt;?php<br />&nbsp;&nbsp;$x&nbsp;</span><span style="color: #007700">=&nbsp;&lt;&lt;&lt;EOT<br /></span><span style="color: #0000BB">some&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #007700">EOT<br />&nbsp;&nbsp;</span><span style="color: #0000BB">$y&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code>
diff --git a/Zend/zend.c b/Zend/zend.c
index 7382d952f..8ba0f2b49 100644
--- a/Zend/zend.c
+++ b/Zend/zend.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend.c,v 1.308.2.4 2005/11/15 13:29:28 dmitry Exp $ */
+/* $Id: zend.c,v 1.308.2.7 2006/01/04 23:53:03 andi Exp $ */
#include "zend.h"
#include "zend_extensions.h"
@@ -102,7 +102,7 @@ ZEND_API zval zval_used_for_init; /* True global variable */
/* version information */
static char *zend_version_info;
static uint zend_version_info_length;
-#define ZEND_CORE_VERSION_INFO "Zend Engine v" ZEND_VERSION ", Copyright (c) 1998-2005 Zend Technologies\n"
+#define ZEND_CORE_VERSION_INFO "Zend Engine v" ZEND_VERSION ", Copyright (c) 1998-2006 Zend Technologies\n"
#define PRINT_ZVAL_INDENT 4
@@ -453,6 +453,13 @@ static void compiler_globals_ctor(zend_compiler_globals *compiler_globals TSRMLS
compiler_globals->auto_globals = (HashTable *) malloc(sizeof(HashTable));
zend_hash_init_ex(compiler_globals->auto_globals, 8, NULL, NULL, 1, 0);
zend_hash_copy(compiler_globals->auto_globals, global_auto_globals_table, NULL, NULL, sizeof(zend_auto_global) /* empty element */);
+
+ compiler_globals->last_static_member = zend_hash_num_elements(compiler_globals->class_table);
+ if (compiler_globals->last_static_member) {
+ compiler_globals->static_members = (HashTable**)calloc(compiler_globals->last_static_member, sizeof(HashTable*));
+ } else {
+ compiler_globals->static_members = NULL;
+ }
}
@@ -470,6 +477,10 @@ static void compiler_globals_dtor(zend_compiler_globals *compiler_globals TSRMLS
zend_hash_destroy(compiler_globals->auto_globals);
free(compiler_globals->auto_globals);
}
+ if (compiler_globals->static_members) {
+ free(compiler_globals->static_members);
+ }
+ compiler_globals->last_static_member = 0;
}
@@ -1035,7 +1046,7 @@ ZEND_API void zend_error(int type, const char *format, ...)
}
}
-#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && !defined(DARWIN)
+#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && !defined(DARWIN) && !defined(__hpux)
void zend_error_noreturn(int type, const char *format, ...) __attribute__ ((alias("zend_error"),noreturn));
#endif
diff --git a/Zend/zend.h b/Zend/zend.h
index 3462759c4..e99898d07 100644
--- a/Zend/zend.h
+++ b/Zend/zend.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend.h,v 1.293.2.6 2005/11/26 21:03:44 iliaa Exp $ */
+/* $Id: zend.h,v 1.293.2.9 2006/01/04 23:53:03 andi Exp $ */
#ifndef ZEND_H
#define ZEND_H
@@ -250,7 +250,7 @@ char *alloca ();
#define INTERNAL_FUNCTION_PARAMETERS int ht, zval *return_value, zval **return_value_ptr, zval *this_ptr, int return_value_used TSRMLS_DC
#define INTERNAL_FUNCTION_PARAM_PASSTHRU ht, return_value, return_value_ptr, this_ptr, return_value_used TSRMLS_CC
-#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && !defined(DARWIN)
+#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && !defined(DARWIN) && !defined(__hpux)
# define ZEND_VM_ALWAYS_INLINE __attribute__ ((always_inline))
void zend_error_noreturn(int type, const char *format, ...) __attribute__ ((noreturn));
#else
@@ -279,16 +279,8 @@ typedef struct _zend_object {
HashTable *guards; /* protects from __get/__set ... recursion */
} zend_object;
-typedef unsigned int zend_object_handle;
-typedef struct _zend_object_value zend_object_value;
-
#include "zend_object_handlers.h"
-struct _zend_object_value {
- zend_object_handle handle;
- zend_object_handlers *handlers;
-};
-
typedef union _zvalue_value {
long lval; /* long value */
double dval; /* double value */
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index 59a3d1e0a..b7b6aeafe 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_API.c,v 1.296.2.12 2005/11/23 18:51:44 tony2001 Exp $ */
+/* $Id: zend_API.c,v 1.296.2.16 2006/01/06 20:55:14 tony2001 Exp $ */
#include "zend.h"
#include "zend_execute.h"
@@ -755,22 +755,26 @@ ZEND_API void zend_merge_properties(zval *obj, HashTable *properties, int destro
ZEND_API void zend_update_class_constants(zend_class_entry *class_type TSRMLS_DC)
{
- if (!class_type->constants_updated || !class_type->static_members) {
+ if (!class_type->constants_updated || !CE_STATIC_MEMBERS(class_type)) {
zend_class_entry **scope = EG(in_execution)?&EG(scope):&CG(active_class_entry);
zend_class_entry *old_scope = *scope;
*scope = class_type;
zend_hash_apply_with_argument(&class_type->default_properties, (apply_func_arg_t) zval_update_constant, (void *) 1 TSRMLS_CC);
- if (!class_type->static_members) {
+ if (!CE_STATIC_MEMBERS(class_type)) {
HashPosition pos;
zval **p;
if (class_type->parent) {
zend_update_class_constants(class_type->parent TSRMLS_CC);
}
+#if ZTS
+ ALLOC_HASHTABLE(CG(static_members)[(long)(class_type->static_members)]);
+#else
ALLOC_HASHTABLE(class_type->static_members);
- zend_hash_init(class_type->static_members, 0, NULL, ZVAL_PTR_DTOR, 0);
+#endif
+ zend_hash_init(CE_STATIC_MEMBERS(class_type), 0, NULL, ZVAL_PTR_DTOR, 0);
zend_hash_internal_pointer_reset_ex(&class_type->default_static_members, &pos);
while (zend_hash_get_current_data_ex(&class_type->default_static_members, (void**)&p, &pos) == SUCCESS) {
@@ -784,10 +788,10 @@ ZEND_API void zend_update_class_constants(zend_class_entry *class_type TSRMLS_DC
class_type->parent &&
zend_hash_find(&class_type->parent->default_static_members, str_index, str_length, (void**)&q) == SUCCESS &&
*p == *q &&
- zend_hash_find(class_type->parent->static_members, str_index, str_length, (void**)&q) == SUCCESS) {
+ zend_hash_find(CE_STATIC_MEMBERS(class_type->parent), str_index, str_length, (void**)&q) == SUCCESS) {
(*q)->refcount++;
(*q)->is_ref = 1;
- zend_hash_add(class_type->static_members, str_index, str_length, (void**)q, sizeof(zval*), NULL);
+ zend_hash_add(CE_STATIC_MEMBERS(class_type), str_index, str_length, (void**)q, sizeof(zval*), NULL);
} else {
zval *q;
@@ -795,12 +799,12 @@ ZEND_API void zend_update_class_constants(zend_class_entry *class_type TSRMLS_DC
*q = **p;
INIT_PZVAL(q);
zval_copy_ctor(q);
- zend_hash_add(class_type->static_members, str_index, str_length, (void**)&q, sizeof(zval*), NULL);
+ zend_hash_add(CE_STATIC_MEMBERS(class_type), str_index, str_length, (void**)&q, sizeof(zval*), NULL);
}
zend_hash_move_forward_ex(&class_type->default_static_members, &pos);
}
}
- zend_hash_apply_with_argument(class_type->static_members, (apply_func_arg_t) zval_update_constant, (void *) 1 TSRMLS_CC);
+ zend_hash_apply_with_argument(CE_STATIC_MEMBERS(class_type), (apply_func_arg_t) zval_update_constant, (void *) 1 TSRMLS_CC);
*scope = old_scope;
class_type->constants_updated = 1;
@@ -1970,15 +1974,94 @@ ZEND_API int zend_disable_class(char *class_name, uint class_name_length TSRMLS_
return 1;
}
-ZEND_API zend_bool zend_is_callable_ex(zval *callable, uint check_flags, char **callable_name, int *callable_name_len, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zval ***zobj_ptr_ptr TSRMLS_DC)
+static int zend_is_callable_check_func(int check_flags, zval **zobj_ptr, zend_class_entry *ce_org, zval *callable, zend_class_entry **ce_ptr, zend_function **fptr_ptr TSRMLS_DC)
{
+ int retval;
char *lcname, *lmname, *colon;
+ int clen, mlen;
+ zend_function *fptr;
+ zend_class_entry **pce;
+ HashTable *ftable;
+
+ *ce_ptr = NULL;
+ *fptr_ptr = NULL;
+
+ if ((colon = strstr(Z_STRVAL_P(callable), "::")) != NULL) {
+ clen = colon - Z_STRVAL_P(callable);
+ mlen = Z_STRLEN_P(callable) - clen - 2;
+ if (zend_lookup_class(Z_STRVAL_P(callable), clen, &pce TSRMLS_CC) == SUCCESS) {
+ *ce_ptr = *pce;
+ } else {
+ lcname = zend_str_tolower_dup(Z_STRVAL_P(callable), clen);
+ /* caution: lcname is not '\0' terminated */
+ if (clen == sizeof("self") - 1 && memcmp(lcname, "self", sizeof("self") - 1) == 0) {
+ *ce_ptr = EG(scope);
+ } else if (clen == sizeof("parent") - 1 && memcmp(lcname, "parent", sizeof("parent") - 1) == 0 && EG(active_op_array)->scope) {
+ *ce_ptr = EG(scope) ? EG(scope)->parent : NULL;
+ }
+ efree(lcname);
+ }
+ if (!*ce_ptr) {
+ return 0;
+ }
+ ftable = &(*ce_ptr)->function_table;
+ if (ce_org && !instanceof_function(ce_org, *ce_ptr TSRMLS_CC)) {
+ return 0;
+ }
+ lmname = zend_str_tolower_dup(Z_STRVAL_P(callable) + clen + 2, mlen);
+ } else {
+ mlen = Z_STRLEN_P(callable);
+ lmname = zend_str_tolower_dup(Z_STRVAL_P(callable), mlen);
+ if (ce_org) {
+ ftable = &ce_org->function_table;
+ *ce_ptr = ce_org;
+ } else {
+ ftable = EG(function_table);
+ }
+ }
+
+ retval = zend_hash_find(ftable, lmname, mlen+1, (void**)&fptr) == SUCCESS ? 1 : 0;
+
+ if (!retval) {
+ if (zobj_ptr && *ce_ptr && (*ce_ptr)->__call != 0) {
+ retval = (*ce_ptr)->__call != NULL;
+ *fptr_ptr = (*ce_ptr)->__call;
+ }
+ } else {
+ *fptr_ptr = fptr;
+ if (*ce_ptr) {
+ if (!zobj_ptr && !(fptr->common.fn_flags & ZEND_ACC_STATIC)) {
+ if ((check_flags & IS_CALLABLE_CHECK_IS_STATIC) != 0) {
+ retval = 0;
+ } else {
+ zend_error(E_STRICT, "Non-static method %s::%s() cannot be called statically", (*ce_ptr)->name, fptr->common.function_name);
+ }
+ }
+ if (retval && (check_flags & IS_CALLABLE_CHECK_NO_ACCESS) == 0) {
+ if (fptr->op_array.fn_flags & ZEND_ACC_PRIVATE) {
+ if (!zend_check_private(fptr, zobj_ptr ? Z_OBJCE_PP(zobj_ptr) : EG(scope), lmname, mlen TSRMLS_CC)) {
+ retval = 0;
+ }
+ } else if ((fptr->common.fn_flags & ZEND_ACC_PROTECTED)) {
+ if (!zend_check_protected(fptr->common.scope, EG(scope))) {
+ retval = 0;
+ }
+ }
+ }
+ }
+ }
+ efree(lmname);
+ return retval;
+}
+
+ZEND_API zend_bool zend_is_callable_ex(zval *callable, uint check_flags, char **callable_name, int *callable_name_len, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zval ***zobj_ptr_ptr TSRMLS_DC)
+{
+ char *lcname;
zend_bool retval = 0;
- int callable_name_len_local, clen, mlen;
+ int callable_name_len_local;
zend_class_entry *ce_local, **pce;
zend_function *fptr_local;
zval **zobj_ptr_local;
- HashTable *ftable;
if (callable_name_len == NULL) {
callable_name_len = &callable_name_len_local;
@@ -2006,33 +2089,7 @@ ZEND_API zend_bool zend_is_callable_ex(zval *callable, uint check_flags, char **
return 1;
}
- if ((colon = strstr(Z_STRVAL_P(callable), "::")) != NULL) {
- clen = colon - Z_STRVAL_P(callable);
- mlen = Z_STRLEN_P(callable) - clen - 2;
- lcname = estrndup(Z_STRVAL_P(callable), clen);
- lcname[clen] = '\0';
- lmname = zend_str_tolower_dup(Z_STRVAL_P(callable) + clen + 2, mlen);
- if (zend_lookup_class(lcname, clen, &pce TSRMLS_CC) == FAILURE) {
- efree(lcname);
- efree(lmname);
- return 0;
- }
- efree(lcname);
- *ce_ptr = *pce;
- ftable = &(*ce_ptr)->function_table;
- } else {
- mlen = Z_STRLEN_P(callable);
- lmname = zend_str_tolower_dup(Z_STRVAL_P(callable), mlen);
- ftable = EG(function_table);
- }
-
- if (zend_hash_find(ftable, lmname, mlen+1, (void**)fptr_ptr) == SUCCESS) {
- retval = 1;
- }
- if (*ce_ptr && *fptr_ptr && !((*fptr_ptr)->common.fn_flags & ZEND_ACC_STATIC)) {
- retval = 0;
- }
- efree(lmname);
+ retval = zend_is_callable_check_func(check_flags|IS_CALLABLE_CHECK_IS_STATIC, NULL, NULL, callable, ce_ptr, fptr_ptr TSRMLS_CC);
break;
case IS_ARRAY:
@@ -2061,7 +2118,6 @@ ZEND_API zend_bool zend_is_callable_ex(zval *callable, uint check_flags, char **
}
if (check_flags & IS_CALLABLE_CHECK_SYNTAX_ONLY) {
- *ce_ptr = ce;
return 1;
}
@@ -2076,6 +2132,12 @@ ZEND_API zend_bool zend_is_callable_ex(zval *callable, uint check_flags, char **
}
efree(lcname);
}
+ if (EG(This)) {
+ if (instanceof_function(Z_OBJCE_P(EG(This)), ce TSRMLS_CC)) {
+ *zobj_ptr_ptr = &EG(This);
+ zend_error(E_STRICT, "Non-static method %s::%s() cannot be called statically, assuming $this from compatible context %s", ce->name, Z_STRVAL_PP(method), Z_OBJCE_P(EG(This))->name);
+ }
+ }
} else {
ce = Z_OBJCE_PP(obj); /* TBFixed: what if it's overloaded? */
@@ -2100,38 +2162,12 @@ ZEND_API zend_bool zend_is_callable_ex(zval *callable, uint check_flags, char **
}
if (ce) {
- zend_function *fbc;
-
- lcname = zend_str_tolower_dup(Z_STRVAL_PP(method), Z_STRLEN_PP(method));
- if (zend_hash_find(&ce->function_table, lcname, Z_STRLEN_PP(method)+1, (void **)&fbc) == SUCCESS) {
- retval = 1;
- if ((check_flags & IS_CALLABLE_CHECK_NO_ACCESS) == 0) {
- if (fbc->op_array.fn_flags & ZEND_ACC_PRIVATE) {
- if (!zend_check_private(fbc, (Z_TYPE_PP(obj) == IS_STRING)?EG(scope):(*obj)->value.obj.handlers->get_class_entry(*obj TSRMLS_CC), lcname, Z_STRLEN_PP(method) TSRMLS_CC)) {
- retval = 0;
- }
- } else if ((fbc->common.fn_flags & ZEND_ACC_PROTECTED)) {
- if (!zend_check_protected(fbc->common.scope, EG(scope))) {
- retval = 0;
- }
- }
- }
- *fptr_ptr = fbc;
- }
- /* check for __call too */
- if (retval == 0 && *zobj_ptr_ptr && ce->__call != 0) {
- retval = 1;
- *fptr_ptr = ce->__call;
- }
- efree(lcname);
+ retval = zend_is_callable_check_func(check_flags, *zobj_ptr_ptr, ce, *method, ce_ptr, fptr_ptr TSRMLS_CC);
}
} else if (callable_name) {
*callable_name = estrndup("Array", sizeof("Array")-1);
*callable_name_len = sizeof("Array") - 1;
}
- if ((check_flags & IS_CALLABLE_CHECK_IS_STATIC) != 0 && !*zobj_ptr_ptr && (!*fptr_ptr || !((*fptr_ptr)->common.fn_flags & ZEND_ACC_STATIC))) {
- retval = 0;
- }
*ce_ptr = ce;
}
break;
diff --git a/Zend/zend_API.h b/Zend/zend_API.h
index 0eb4bb8b9..7daaf3c41 100644
--- a/Zend/zend_API.h
+++ b/Zend/zend_API.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_API.h,v 1.207.2.3 2005/10/28 14:46:29 dmitry Exp $ */
+/* $Id: zend_API.h,v 1.207.2.6 2006/01/04 23:53:03 andi Exp $ */
#ifndef ZEND_API_H
#define ZEND_API_H
@@ -146,6 +146,12 @@ typedef struct _zend_function_entry {
#define INIT_OVERLOADED_CLASS_ENTRY(class_container, class_name, functions, handle_fcall, handle_propget, handle_propset) \
INIT_OVERLOADED_CLASS_ENTRY_EX(class_container, class_name, functions, handle_fcall, handle_propget, handle_propset, NULL, NULL)
+#ifdef ZTS
+# define CE_STATIC_MEMBERS(ce) (((ce)->type==ZEND_USER_CLASS)?(ce)->static_members:CG(static_members)[(long)(ce)->static_members])
+#else
+# define CE_STATIC_MEMBERS(ce) ((ce)->static_members)
+#endif
+
int zend_next_free_module(void);
BEGIN_EXTERN_C()
@@ -198,6 +204,8 @@ ZEND_API void zend_wrong_param_count(TSRMLS_D);
#define IS_CALLABLE_CHECK_NO_ACCESS (1<<1)
#define IS_CALLABLE_CHECK_IS_STATIC (1<<2)
+#define IS_CALLABLE_STRICT (IS_CALLABLE_CHECK_IS_STATIC)
+
ZEND_API zend_bool zend_is_callable_ex(zval *callable, uint check_flags, char **callable_name, int *callable_name_len, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zval ***zobj_ptr_ptr TSRMLS_DC);
ZEND_API zend_bool zend_is_callable(zval *callable, uint check_flags, char **callable_name);
ZEND_API zend_bool zend_make_callable(zval *callable, char **callable_name TSRMLS_DC);
diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c
index cdfa7c6de..e50b96f9a 100644
--- a/Zend/zend_alloc.c
+++ b/Zend/zend_alloc.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_alloc.c,v 1.144.2.1 2005/08/18 15:14:12 iliaa Exp $ */
+/* $Id: zend_alloc.c,v 1.144.2.3 2006/01/04 23:53:03 andi Exp $ */
#include "zend.h"
#include "zend_alloc.h"
@@ -558,6 +558,7 @@ ZEND_API void shutdown_memory_manager(int silent, int full_shutdown TSRMLS_DC)
grand_total_leaks++;
if (!silent) {
+ zend_message_dispatcher(ZMSG_LOG_SCRIPT_NAME, NULL);
zend_message_dispatcher(ZMSG_MEMORY_LEAK_DETECTED, t);
}
t->reported = 1;
diff --git a/Zend/zend_alloc.h b/Zend/zend_alloc.h
index a2d54dec9..8e25aed16 100644
--- a/Zend/zend_alloc.h
+++ b/Zend/zend_alloc.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_alloc.h,v 1.63 2005/08/03 13:30:47 sniper Exp $ */
+/* $Id: zend_alloc.h,v 1.63.2.2 2006/01/04 23:53:03 andi Exp $ */
#ifndef ZEND_ALLOC_H
#define ZEND_ALLOC_H
@@ -125,6 +125,7 @@ ZEND_API char *_estrndup(const char *s, unsigned int length ZEND_FILE_LINE_DC ZE
#else
+#undef _GNU_SOURCE
#define _GNU_SOURCE
#include <string.h>
#undef _GNU_SOURCE
diff --git a/Zend/zend_arg_defs.c b/Zend/zend_arg_defs.c
index 603dccdeb..53dbfaf13 100644
--- a/Zend/zend_arg_defs.c
+++ b/Zend/zend_arg_defs.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_arg_defs.c,v 1.2 2005/01/10 14:57:35 sniper Exp $ */
+/* $Id: zend_arg_defs.c,v 1.2.2.1 2006/01/04 23:53:04 andi Exp $ */
ZEND_BEGIN_ARG_INFO(first_arg_force_ref, 0)
ZEND_ARG_PASS_INFO(1)
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index 62b265a59..fd2e1b343 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_builtin_functions.c,v 1.277.2.6 2005/11/24 05:07:27 sebastian Exp $ */
+/* $Id: zend_builtin_functions.c,v 1.277.2.8 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
#include "zend_API.h"
@@ -738,7 +738,7 @@ ZEND_FUNCTION(get_class_vars)
array_init(return_value);
add_class_vars(*pce, &(*pce)->default_properties, return_value TSRMLS_CC);
zend_update_class_constants(*pce TSRMLS_CC);
- add_class_vars(*pce, (*pce)->static_members, return_value TSRMLS_CC);
+ add_class_vars(*pce, CE_STATIC_MEMBERS(*pce), return_value TSRMLS_CC);
}
}
/* }}} */
diff --git a/Zend/zend_builtin_functions.h b/Zend/zend_builtin_functions.h
index f000bb21e..073ed3e06 100644
--- a/Zend/zend_builtin_functions.h
+++ b/Zend/zend_builtin_functions.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_builtin_functions.h,v 1.17.2.1 2005/11/24 05:07:28 sebastian Exp $ */
+/* $Id: zend_builtin_functions.h,v 1.17.2.2 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_BUILTIN_FUNCTIONS_H
#define ZEND_BUILTIN_FUNCTIONS_H
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 3c4761d28..50e1ba836 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_compile.c,v 1.647.2.18 2005/11/27 06:39:27 iliaa Exp $ */
+/* $Id: zend_compile.c,v 1.647.2.21 2006/01/04 23:53:04 andi Exp $ */
#include <zend_language_parser.h>
#include "zend.h"
@@ -1841,6 +1841,12 @@ static void do_inherit_parent_constructor(zend_class_entry *ce)
ce->destructor = ce->parent->destructor;
}
if (ce->constructor) {
+ if (ce->parent->constructor && ce->parent->constructor->common.fn_flags & ZEND_ACC_FINAL) {
+ zend_error(E_ERROR, "Cannot override final %s::%s() with %s::%s()",
+ ce->parent->name, ce->parent->constructor->common.function_name,
+ ce->name, ce->constructor->common.function_name
+ );
+ }
return;
}
@@ -2090,7 +2096,9 @@ static zend_bool do_inherit_property_access_check(HashTable *target_ht, zend_pro
if (parent_ce->type != ce->type) {
/* User class extends internal class */
- ht = parent_ce->static_members;
+ TSRMLS_FETCH();
+
+ ht = CE_STATIC_MEMBERS(parent_ce);
} else {
ht = &parent_ce->default_static_members;
}
@@ -2196,7 +2204,7 @@ ZEND_API void zend_do_inheritance(zend_class_entry *ce, zend_class_entry *parent
if (parent_ce->type != ce->type) {
/* User class extends internal class */
zend_update_class_constants(parent_ce TSRMLS_CC);
- zend_hash_merge(&ce->default_static_members, parent_ce->static_members, (void (*)(void *)) inherit_static_prop, NULL, sizeof(zval *), 0);
+ zend_hash_merge(&ce->default_static_members, CE_STATIC_MEMBERS(parent_ce), (void (*)(void *)) inherit_static_prop, NULL, sizeof(zval *), 0);
} else {
zend_hash_merge(&ce->default_static_members, &parent_ce->default_static_members, (void (*)(void *)) inherit_static_prop, NULL, sizeof(zval *), 0);
}
@@ -4026,7 +4034,23 @@ ZEND_API void zend_initialize_class_data(zend_class_entry *ce, zend_bool nullify
zend_hash_init_ex(&ce->constants_table, 0, NULL, zval_ptr_dtor_func, persistent_hashes, 0);
zend_hash_init_ex(&ce->function_table, 0, NULL, ZEND_FUNCTION_DTOR, persistent_hashes, 0);
- ce->static_members = (ce->type == ZEND_INTERNAL_CLASS) ? NULL : &ce->default_static_members;
+ if (ce->type == ZEND_INTERNAL_CLASS) {
+#ifdef ZTS
+ int n = zend_hash_num_elements(CG(class_table));
+
+ if (CG(static_members) && n >= CG(last_static_member)) {
+ /* Support for run-time declaration: dl() */
+ CG(last_static_member) = n+1;
+ CG(static_members) = realloc(CG(static_members), (n+1)*sizeof(HashTable*));
+ CG(static_members)[n] = NULL;
+ }
+ ce->static_members = (HashTable*)n;
+#else
+ ce->static_members = NULL;
+#endif
+ } else {
+ ce->static_members = &ce->default_static_members;
+ }
if (nullify_handlers) {
ce->constructor = NULL;
diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h
index 6958f6ebb..ae273a644 100644
--- a/Zend/zend_compile.h
+++ b/Zend/zend_compile.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_compile.h,v 1.316.2.5 2005/10/20 07:30:42 dmitry Exp $ */
+/* $Id: zend_compile.h,v 1.316.2.6 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_COMPILE_H
#define ZEND_COMPILE_H
diff --git a/Zend/zend_config.nw.h b/Zend/zend_config.nw.h
index db78eefba..47a0df8c2 100644
--- a/Zend/zend_config.nw.h
+++ b/Zend/zend_config.nw.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_config.nw.h,v 1.8 2005/08/03 13:30:49 sniper Exp $ */
+/* $Id: zend_config.nw.h,v 1.8.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_CONFIG_NW_H
#define ZEND_CONFIG_NW_H
diff --git a/Zend/zend_config.w32.h b/Zend/zend_config.w32.h
index 3d425efbb..61d07b083 100644
--- a/Zend/zend_config.w32.h
+++ b/Zend/zend_config.w32.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_config.w32.h,v 1.39 2005/08/03 13:30:49 sniper Exp $ */
+/* $Id: zend_config.w32.h,v 1.39.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_CONFIG_W32_H
#define ZEND_CONFIG_W32_H
diff --git a/Zend/zend_constants.c b/Zend/zend_constants.c
index ba5b34743..eda2ab0f8 100644
--- a/Zend/zend_constants.c
+++ b/Zend/zend_constants.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_constants.c,v 1.71 2005/08/03 13:30:49 sniper Exp $ */
+/* $Id: zend_constants.c,v 1.71.2.1 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
#include "zend_constants.h"
diff --git a/Zend/zend_constants.h b/Zend/zend_constants.h
index 98ce3b427..c02e4c531 100644
--- a/Zend/zend_constants.h
+++ b/Zend/zend_constants.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_constants.h,v 1.31 2005/08/03 13:30:49 sniper Exp $ */
+/* $Id: zend_constants.h,v 1.31.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_CONSTANTS_H
#define ZEND_CONSTANTS_H
diff --git a/Zend/zend_default_classes.c b/Zend/zend_default_classes.c
index abf23e108..50f67cc4d 100644
--- a/Zend/zend_default_classes.c
+++ b/Zend/zend_default_classes.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,11 +17,10 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_default_classes.c,v 1.59 2005/08/03 13:30:49 sniper Exp $ */
+/* $Id: zend_default_classes.c,v 1.59.2.2 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
#include "zend_API.h"
-#include "zend_reflection_api.h"
#include "zend_builtin_functions.h"
#include "zend_interfaces.h"
#include "zend_exceptions.h"
@@ -31,7 +30,6 @@ ZEND_API void zend_register_default_classes(TSRMLS_D)
{
zend_register_interfaces(TSRMLS_C);
zend_register_default_exception(TSRMLS_C);
- zend_register_reflection_api(TSRMLS_C);
zend_register_iterator_wrapper(TSRMLS_C);
}
diff --git a/Zend/zend_dynamic_array.c b/Zend/zend_dynamic_array.c
index bc350c573..871c1c5bb 100644
--- a/Zend/zend_dynamic_array.c
+++ b/Zend/zend_dynamic_array.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_dynamic_array.c,v 1.13 2005/08/03 13:30:49 sniper Exp $ */
+/* $Id: zend_dynamic_array.c,v 1.13.2.1 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
diff --git a/Zend/zend_dynamic_array.h b/Zend/zend_dynamic_array.h
index 498cf5d43..02008c2e1 100644
--- a/Zend/zend_dynamic_array.h
+++ b/Zend/zend_dynamic_array.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_dynamic_array.h,v 1.14 2005/08/03 13:30:49 sniper Exp $ */
+/* $Id: zend_dynamic_array.h,v 1.14.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_DYNAMIC_ARRAY_H
#define ZEND_DYNAMIC_ARRAY_H
diff --git a/Zend/zend_errors.h b/Zend/zend_errors.h
index 0be96e0ec..d8f3c0ea7 100644
--- a/Zend/zend_errors.h
+++ b/Zend/zend_errors.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_errors.h,v 1.18 2005/08/03 13:30:49 sniper Exp $ */
+/* $Id: zend_errors.h,v 1.18.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_ERRORS_H
#define ZEND_ERRORS_H
diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c
index 38131d045..2889e89a0 100644
--- a/Zend/zend_exceptions.c
+++ b/Zend/zend_exceptions.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -19,11 +19,10 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_exceptions.c,v 1.79.2.2 2005/11/24 05:07:28 sebastian Exp $ */
+/* $Id: zend_exceptions.c,v 1.79.2.6 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
#include "zend_API.h"
-#include "zend_reflection_api.h"
#include "zend_builtin_functions.h"
#include "zend_interfaces.h"
#include "zend_exceptions.h"
@@ -132,7 +131,7 @@ ZEND_METHOD(exception, __construct)
int argc = ZEND_NUM_ARGS(), message_len;
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, argc TSRMLS_CC, "|sl", &message, &message_len, &code) == FAILURE) {
- zend_error(E_ERROR, "Wrong parameter count for exception([string $exception [, long $code ]])");
+ zend_error(E_ERROR, "Wrong parameters for Exception([string $exception [, long $code ]])");
}
object = getThis();
@@ -158,7 +157,7 @@ ZEND_METHOD(error_exception, __construct)
int argc = ZEND_NUM_ARGS(), message_len, filename_len;
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, argc TSRMLS_CC, "|sllsl", &message, &message_len, &code, &severity, &filename, &filename_len, &lineno) == FAILURE) {
- zend_error(E_ERROR, "Wrong parameter count for exception([string $exception [, long $code ]])");
+ zend_error(E_ERROR, "Wrong parameters for ErrorException([string $exception [, long $code, [ long $severity, [ string $filename, [ long $lineno ]]]]])");
}
object = getThis();
diff --git a/Zend/zend_exceptions.h b/Zend/zend_exceptions.h
index 8e7c57219..d0587a34e 100644
--- a/Zend/zend_exceptions.h
+++ b/Zend/zend_exceptions.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_exceptions.h,v 1.21 2005/08/03 13:30:49 sniper Exp $ */
+/* $Id: zend_exceptions.h,v 1.21.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_EXCEPTIONS_H
#define ZEND_EXCEPTIONS_H
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 459708ba1..8dfa0065d 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_execute.c,v 1.716.2.6 2005/11/16 11:52:26 dmitry Exp $ */
+/* $Id: zend_execute.c,v 1.716.2.10 2006/01/04 23:53:04 andi Exp $ */
#define ZEND_INTENSIVE_DEBUGGING 0
@@ -440,6 +440,7 @@ static inline void make_real_object(zval **object_ptr TSRMLS_DC)
SEPARATE_ZVAL(object_ptr);
}
zend_error(E_STRICT, "Creating default object from empty value");
+ zval_dtor(*object_ptr);
object_init(*object_ptr);
}
}
diff --git a/Zend/zend_execute.h b/Zend/zend_execute.h
index beec3b5d1..ee105c8e0 100644
--- a/Zend/zend_execute.h
+++ b/Zend/zend_execute.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_execute.h,v 1.84.2.3 2005/09/19 17:50:24 dmitry Exp $ */
+/* $Id: zend_execute.h,v 1.84.2.4 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_EXECUTE_H
#define ZEND_EXECUTE_H
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c
index dc1f37082..c7f6c960a 100644
--- a/Zend/zend_execute_API.c
+++ b/Zend/zend_execute_API.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_execute_API.c,v 1.331.2.5 2005/11/24 11:33:11 dmitry Exp $ */
+/* $Id: zend_execute_API.c,v 1.331.2.11 2006/01/04 23:53:04 andi Exp $ */
#include <stdio.h>
#include <signal.h>
@@ -46,6 +46,7 @@ ZEND_API zend_fcall_info_cache empty_fcall_info_cache = { 0, NULL, NULL, NULL };
static WNDCLASS wc;
static HWND timeout_window;
static HANDLE timeout_thread_event;
+static HANDLE timeout_thread_handle;
static DWORD timeout_thread_id;
static int timeout_thread_initialized=0;
#endif
@@ -501,17 +502,9 @@ ZEND_API int zval_update_constant(zval **pp, void *arg TSRMLS_DC)
*element = new_val;
switch (const_value.type) {
- case IS_STRING: {
- long lval;
- double dval;
-
- if (is_numeric_string(const_value.value.str.val, const_value.value.str.len, &lval, &dval, 0) == IS_LONG) {
- zend_hash_update_current_key(p->value.ht, HASH_KEY_IS_LONG, NULL, 0, lval);
- } else {
- zend_hash_update_current_key(p->value.ht, HASH_KEY_IS_STRING, const_value.value.str.val, const_value.value.str.len+1, 0);
- }
+ case IS_STRING:
+ zend_symtable_update_current_key(p->value.ht, const_value.value.str.val, const_value.value.str.len+1);
break;
- }
case IS_BOOL:
case IS_LONG:
zend_hash_update_current_key(p->value.ht, HASH_KEY_IS_LONG, NULL, 0, const_value.value.lval);
@@ -594,6 +587,8 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS
zval *method_name;
zval *params_array;
int call_via_handler = 0;
+ char *fname, *colon;
+ int fname_len;
if (EG(exception)) {
return FAILURE; /* we would result in an instable executor otherwise */
@@ -713,30 +708,62 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS
return FAILURE;
}
+ fname = Z_STRVAL_P(fci->function_name);
+ fname_len = Z_STRLEN_P(fci->function_name);
+ if (calling_scope && (colon = strstr(fname, "::")) != NULL) {
+ int clen = colon - fname;
+ int mlen = fname_len - clen - 2;
+ zend_class_entry **pce, *ce_child;
+ if (zend_lookup_class(fname, clen, &pce TSRMLS_CC) == SUCCESS) {
+ ce_child = *pce;
+ } else {
+ char *lcname = zend_str_tolower_dup(fname, clen);
+ /* caution: lcname is not '\0' terminated */
+ if (clen == sizeof("self") - 1 && memcmp(lcname, "self", sizeof("self") - 1) == 0) {
+ ce_child = EG(active_op_array) ? EG(active_op_array)->scope : NULL;
+ } else if (clen == sizeof("parent") - 1 && memcmp(lcname, "parent", sizeof("parent") - 1) == 0 && EG(active_op_array)->scope) {
+ ce_child = EG(active_op_array) && EG(active_op_array)->scope ? EG(scope)->parent : NULL;
+ }
+ efree(lcname);
+ }
+ if (!ce_child) {
+ zend_error(E_ERROR, "Cannot call method %s() or method does not exist", fname);
+ return FAILURE;
+ }
+ if (!instanceof_function(calling_scope, ce_child TSRMLS_CC)) {
+ zend_error(E_ERROR, "Cannot call method %s() of class %s which is not a derived from %s", fname, ce_child->name, calling_scope->name);
+ return 0;
+ }
+ fci->function_table = &ce_child->function_table;
+ calling_scope = ce_child;
+ fname = fname + clen + 2;
+ fname_len = mlen;
+ }
+
if (fci->object_pp) {
if (Z_OBJ_HT_PP(fci->object_pp)->get_method == NULL) {
zend_error(E_ERROR, "Object does not support method calls");
}
EX(function_state).function =
- Z_OBJ_HT_PP(fci->object_pp)->get_method(fci->object_pp, Z_STRVAL_P(fci->function_name), Z_STRLEN_P(fci->function_name) TSRMLS_CC);
+ Z_OBJ_HT_PP(fci->object_pp)->get_method(fci->object_pp, fname, fname_len TSRMLS_CC);
if (EX(function_state).function && calling_scope != EX(function_state).function->common.scope) {
- char *function_name_lc = zend_str_tolower_dup(Z_STRVAL_P(fci->function_name), Z_STRLEN_P(fci->function_name));
- if (zend_hash_find(&calling_scope->function_table, function_name_lc, fci->function_name->value.str.len+1, (void **) &EX(function_state).function)==FAILURE) {
+ char *function_name_lc = zend_str_tolower_dup(fname, fname_len);
+ if (zend_hash_find(&calling_scope->function_table, function_name_lc, fname_len+1, (void **) &EX(function_state).function)==FAILURE) {
efree(function_name_lc);
- zend_error(E_ERROR, "Cannot call method %s::%s() or method does not exist", calling_scope->name, Z_STRVAL_P(fci->function_name));
+ zend_error(E_ERROR, "Cannot call method %s::%s() or method does not exist", calling_scope->name, fname);
}
efree(function_name_lc);
}
} else if (calling_scope) {
- char *function_name_lc = zend_str_tolower_dup(Z_STRVAL_P(fci->function_name), Z_STRLEN_P(fci->function_name));
+ char *function_name_lc = zend_str_tolower_dup(fname, fname_len);
EX(function_state).function =
- zend_std_get_static_method(calling_scope, function_name_lc, Z_STRLEN_P(fci->function_name) TSRMLS_CC);
+ zend_std_get_static_method(calling_scope, function_name_lc, fname_len TSRMLS_CC);
efree(function_name_lc);
} else {
- char *function_name_lc = zend_str_tolower_dup(Z_STRVAL_P(fci->function_name), Z_STRLEN_P(fci->function_name));
+ char *function_name_lc = zend_str_tolower_dup(fname, fname_len);
- if (zend_hash_find(fci->function_table, function_name_lc, fci->function_name->value.str.len+1, (void **) &EX(function_state).function)==FAILURE) {
+ if (zend_hash_find(fci->function_table, function_name_lc, fname_len+1, (void **) &EX(function_state).function)==FAILURE) {
EX(function_state).function = NULL;
}
efree(function_name_lc);
@@ -920,7 +947,7 @@ ZEND_API int zend_lookup_class_ex(char *name, int name_length, int use_autoload,
zval **args[1];
zval autoload_function;
zval *class_name_ptr;
- zval *retval_ptr;
+ zval *retval_ptr = NULL;
int retval;
char *lc_name;
zval *exception;
@@ -1003,6 +1030,8 @@ ZEND_API int zend_lookup_class_ex(char *name, int name_length, int use_autoload,
}
if (!EG(exception)) {
EG(exception) = exception;
+ }
+ if (retval_ptr) {
zval_ptr_dtor(&retval_ptr);
}
@@ -1255,6 +1284,7 @@ static unsigned __stdcall timeout_thread_proc(void *pArgs)
}
DestroyWindow(timeout_window);
UnregisterClass(wc.lpszClassName, NULL);
+ SetEvent(timeout_thread_handle);
return 0;
}
@@ -1262,6 +1292,7 @@ static unsigned __stdcall timeout_thread_proc(void *pArgs)
void zend_init_timeout_thread()
{
timeout_thread_event = CreateEvent(NULL, FALSE, FALSE, NULL);
+ timeout_thread_handle = CreateEvent(NULL, FALSE, FALSE, NULL);
_beginthreadex(NULL, 0, timeout_thread_proc, NULL, 0, &timeout_thread_id);
WaitForSingleObject(timeout_thread_event, INFINITE);
}
@@ -1273,6 +1304,10 @@ void zend_shutdown_timeout_thread()
return;
}
PostThreadMessage(timeout_thread_id, WM_QUIT, 0, 0);
+
+ /* Wait for thread termination */
+ WaitForSingleObject(timeout_thread_handle, 5000);
+ CloseHandle(timeout_thread_handle);
}
#endif
diff --git a/Zend/zend_extensions.c b/Zend/zend_extensions.c
index c92162cc2..e498235f9 100644
--- a/Zend/zend_extensions.c
+++ b/Zend/zend_extensions.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_extensions.c,v 1.48 2005/08/03 13:30:52 sniper Exp $ */
+/* $Id: zend_extensions.c,v 1.48.2.1 2006/01/04 23:53:04 andi Exp $ */
#include "zend_extensions.h"
diff --git a/Zend/zend_extensions.h b/Zend/zend_extensions.h
index 50a204c38..5a87967f8 100644
--- a/Zend/zend_extensions.h
+++ b/Zend/zend_extensions.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_extensions.h,v 1.67.2.2 2005/10/25 23:19:59 helly Exp $ */
+/* $Id: zend_extensions.h,v 1.67.2.3 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_EXTENSIONS_H
#define ZEND_EXTENSIONS_H
diff --git a/Zend/zend_fast_cache.h b/Zend/zend_fast_cache.h
index c3b4010d9..d990e5824 100644
--- a/Zend/zend_fast_cache.h
+++ b/Zend/zend_fast_cache.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_fast_cache.h,v 1.21 2005/08/03 13:30:52 sniper Exp $ */
+/* $Id: zend_fast_cache.h,v 1.21.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_FAST_CACHE_H
#define ZEND_FAST_CACHE_H
diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h
index 91ebb9bd6..7c0997883 100644
--- a/Zend/zend_globals.h
+++ b/Zend/zend_globals.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_globals.h,v 1.141.2.1 2005/11/15 13:29:28 dmitry Exp $ */
+/* $Id: zend_globals.h,v 1.141.2.3 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_GLOBALS_H
#define ZEND_GLOBALS_H
@@ -144,6 +144,11 @@ struct _zend_compiler_globals {
zend_encoding_converter encoding_converter;
zend_encoding_oddlen encoding_oddlen;
#endif /* ZEND_MULTIBYTE */
+
+#ifdef ZTS
+ HashTable **static_members;
+ int last_static_member;
+#endif
};
diff --git a/Zend/zend_globals_macros.h b/Zend/zend_globals_macros.h
index 4e6cc700b..75c221f79 100644
--- a/Zend/zend_globals_macros.h
+++ b/Zend/zend_globals_macros.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_globals_macros.h,v 1.22 2005/08/03 13:30:52 sniper Exp $ */
+/* $Id: zend_globals_macros.h,v 1.22.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_GLOBALS_MACROS_H
#define ZEND_GLOBALS_MACROS_H
diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c
index 68ca6cb55..d37a6737b 100644
--- a/Zend/zend_hash.c
+++ b/Zend/zend_hash.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_hash.c,v 1.121 2005/08/03 13:30:52 sniper Exp $ */
+/* $Id: zend_hash.c,v 1.121.2.1 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h
index 6969512cf..3fab17b45 100644
--- a/Zend/zend_hash.h
+++ b/Zend/zend_hash.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_hash.h,v 1.78 2005/08/03 13:30:52 sniper Exp $ */
+/* $Id: zend_hash.h,v 1.78.2.2 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_HASH_H
#define ZEND_HASH_H
@@ -353,6 +353,12 @@ static inline int zend_symtable_exists(HashTable *ht, char *arKey, uint nKeyLeng
return zend_hash_exists(ht, arKey, nKeyLength);
}
+static inline int zend_symtable_update_current_key(HashTable *ht, char *arKey, uint nKeyLength)
+{
+ HANDLE_NUMERIC(arKey, nKeyLength, zend_hash_update_current_key(ht, HASH_KEY_IS_LONG, NULL, 0, idx));
+ return zend_hash_update_current_key(ht, HASH_KEY_IS_STRING, arKey, nKeyLength, 0);
+}
+
#endif /* ZEND_HASH_H */
/*
diff --git a/Zend/zend_highlight.c b/Zend/zend_highlight.c
index 23cad7053..86f111868 100644
--- a/Zend/zend_highlight.c
+++ b/Zend/zend_highlight.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_highlight.c,v 1.49.2.1 2005/11/27 06:39:28 iliaa Exp $ */
+/* $Id: zend_highlight.c,v 1.49.2.3 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
#include <zend_language_parser.h>
@@ -94,7 +94,7 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini
int token_type;
char *last_color = syntax_highlighter_ini->highlight_html;
char *next_color;
- int in_string=0, post_heredoc = 0;
+ int in_string=0;
zend_printf("<code>");
zend_printf("<span style=\"color: %s\">\n", last_color);
@@ -151,14 +151,9 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini
switch (token_type) {
case T_END_HEREDOC:
zend_html_puts(token.value.str.val, token.value.str.len TSRMLS_CC);
- post_heredoc = 1;
break;
default:
zend_html_puts(LANG_SCNG(yy_text), LANG_SCNG(yy_leng) TSRMLS_CC);
- if (post_heredoc) {
- zend_html_putc('\n');
- post_heredoc = 0;
- }
break;
}
@@ -215,19 +210,18 @@ ZEND_API void zend_strip(TSRMLS_D)
case EOF:
return;
- case T_END_HEREDOC: {
- char *ptr = LANG_SCNG(yy_text);
-
- zend_write(ptr, LANG_SCNG(yy_leng) - 1);
- /* The ensure that we only write one ; and that it followed by the required newline */
- zend_write("\n", sizeof("\n") - 1);
- if (ptr[LANG_SCNG(yy_leng) - 1] == ';') {
- lex_scan(&token TSRMLS_CC);
- }
- efree(token.value.str.val);
+ case T_END_HEREDOC:
+ zend_write(LANG_SCNG(yy_text), LANG_SCNG(yy_leng));
+ efree(token.value.str.val);
+ /* read the following character, either newline or ; */
+ if (lex_scan(&token TSRMLS_CC) != T_WHITESPACE) {
+ zend_write(LANG_SCNG(yy_text), LANG_SCNG(yy_leng));
}
- break;
-
+ zend_write("\n", sizeof("\n") - 1);
+ prev_space = 1;
+ token.type = 0;
+ continue;
+
default:
zend_write(LANG_SCNG(yy_text), LANG_SCNG(yy_leng));
break;
diff --git a/Zend/zend_highlight.h b/Zend/zend_highlight.h
index c448928d3..e90d1dd56 100644
--- a/Zend/zend_highlight.h
+++ b/Zend/zend_highlight.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_highlight.h,v 1.25 2005/08/03 13:30:53 sniper Exp $ */
+/* $Id: zend_highlight.h,v 1.25.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_HIGHLIGHT_H
#define ZEND_HIGHLIGHT_H
diff --git a/Zend/zend_indent.c b/Zend/zend_indent.c
index 6071ad5b7..7d6fb4abf 100644
--- a/Zend/zend_indent.c
+++ b/Zend/zend_indent.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_indent.c,v 1.24 2005/08/03 13:30:53 sniper Exp $ */
+/* $Id: zend_indent.c,v 1.24.2.1 2006/01/04 23:53:04 andi Exp $ */
/* This indenter doesn't really work, it's here for no particular reason. */
diff --git a/Zend/zend_indent.h b/Zend/zend_indent.h
index dc239f7ad..f4fdfc7c1 100644
--- a/Zend/zend_indent.h
+++ b/Zend/zend_indent.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_indent.h,v 1.17 2005/08/03 13:30:53 sniper Exp $ */
+/* $Id: zend_indent.h,v 1.17.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_INDENT_H
#define ZEND_INDENT_H
diff --git a/Zend/zend_ini.c b/Zend/zend_ini.c
index 2dbb83711..c6572d3b8 100644
--- a/Zend/zend_ini.c
+++ b/Zend/zend_ini.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_ini.c,v 1.39.2.1 2005/09/02 20:51:15 andrei Exp $ */
+/* $Id: zend_ini.c,v 1.39.2.2 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
#include "zend_qsort.h"
diff --git a/Zend/zend_ini.h b/Zend/zend_ini.h
index 878b371a4..843f1078a 100644
--- a/Zend/zend_ini.h
+++ b/Zend/zend_ini.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_ini.h,v 1.34 2005/08/03 13:30:53 sniper Exp $ */
+/* $Id: zend_ini.h,v 1.34.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_INI_H
#define ZEND_INI_H
diff --git a/Zend/zend_ini_parser.c b/Zend/zend_ini_parser.c
index a57ab6062..0419a32d1 100644
--- a/Zend/zend_ini_parser.c
+++ b/Zend/zend_ini_parser.c
@@ -89,7 +89,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -103,7 +103,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_ini_parser.y,v 1.41 2005/08/03 13:30:53 sniper Exp $ */
+/* $Id: zend_ini_parser.y,v 1.41.2.1 2006/01/04 23:53:04 andi Exp $ */
#define DEBUG_CFG_PARSER 0
#include "zend.h"
diff --git a/Zend/zend_ini_parser.y b/Zend/zend_ini_parser.y
index 2e386a38c..a12b59387 100644
--- a/Zend/zend_ini_parser.y
+++ b/Zend/zend_ini_parser.y
@@ -3,7 +3,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_ini_parser.y,v 1.41 2005/08/03 13:30:53 sniper Exp $ */
+/* $Id: zend_ini_parser.y,v 1.41.2.1 2006/01/04 23:53:04 andi Exp $ */
#define DEBUG_CFG_PARSER 0
#include "zend.h"
diff --git a/Zend/zend_ini_scanner.c b/Zend/zend_ini_scanner.c
index 769d75a93..02c52dd18 100644
--- a/Zend/zend_ini_scanner.c
+++ b/Zend/zend_ini_scanner.c
@@ -481,7 +481,7 @@ char *yytext;
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -495,7 +495,7 @@ char *yytext;
+----------------------------------------------------------------------+
*/
-/* $Id: zend_ini_scanner.l,v 1.41 2005/08/03 13:30:53 sniper Exp $ */
+/* $Id: zend_ini_scanner.l,v 1.41.2.1 2006/01/04 23:53:04 andi Exp $ */
#define yyleng SCNG(yy_leng)
#define yytext SCNG(yy_text)
diff --git a/Zend/zend_ini_scanner.h b/Zend/zend_ini_scanner.h
index 0ee198008..5fbf171ce 100644
--- a/Zend/zend_ini_scanner.h
+++ b/Zend/zend_ini_scanner.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_ini_scanner.h,v 1.14 2005/08/03 13:30:53 sniper Exp $ */
+/* $Id: zend_ini_scanner.h,v 1.14.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef _ZEND_INI_SCANNER_H
#define _ZEND_INI_SCANNER_H
diff --git a/Zend/zend_ini_scanner.l b/Zend/zend_ini_scanner.l
index 62554bfc7..2a1dad899 100644
--- a/Zend/zend_ini_scanner.l
+++ b/Zend/zend_ini_scanner.l
@@ -3,7 +3,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_ini_scanner.l,v 1.41 2005/08/03 13:30:53 sniper Exp $ */
+/* $Id: zend_ini_scanner.l,v 1.41.2.1 2006/01/04 23:53:04 andi Exp $ */
#define yyleng SCNG(yy_leng)
#define yytext SCNG(yy_text)
diff --git a/Zend/zend_interfaces.c b/Zend/zend_interfaces.c
index dc9a8fbf7..bd8dcc357 100755
--- a/Zend/zend_interfaces.c
+++ b/Zend/zend_interfaces.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_interfaces.c,v 1.33.2.1 2005/10/03 12:36:36 helly Exp $ */
+/* $Id: zend_interfaces.c,v 1.33.2.2 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
#include "zend_API.h"
diff --git a/Zend/zend_interfaces.h b/Zend/zend_interfaces.h
index d7d22e362..24e9f3c24 100755
--- a/Zend/zend_interfaces.h
+++ b/Zend/zend_interfaces.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_interfaces.h,v 1.11 2005/08/03 13:30:53 sniper Exp $ */
+/* $Id: zend_interfaces.h,v 1.11.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_INTERFACES_H
#define ZEND_INTERFACES_H
diff --git a/Zend/zend_istdiostream.h b/Zend/zend_istdiostream.h
index f3cb9c4dc..27f57081d 100644
--- a/Zend/zend_istdiostream.h
+++ b/Zend/zend_istdiostream.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_istdiostream.h,v 1.6 2005/08/03 13:30:53 sniper Exp $ */
+/* $Id: zend_istdiostream.h,v 1.6.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef _ZEND_STDIOSTREAM
#define _ZEND_STDIOSTREAM
diff --git a/Zend/zend_iterators.c b/Zend/zend_iterators.c
index ad034437a..a0349d427 100755
--- a/Zend/zend_iterators.c
+++ b/Zend/zend_iterators.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_iterators.c,v 1.12 2005/08/03 13:30:53 sniper Exp $ */
+/* $Id: zend_iterators.c,v 1.12.2.1 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
#include "zend_API.h"
diff --git a/Zend/zend_iterators.h b/Zend/zend_iterators.h
index 46f939b7d..b8a68296b 100755
--- a/Zend/zend_iterators.h
+++ b/Zend/zend_iterators.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_iterators.h,v 1.10 2005/08/03 13:30:53 sniper Exp $ */
+/* $Id: zend_iterators.h,v 1.10.2.1 2006/01/04 23:53:04 andi Exp $ */
/* These iterators were designed to operate within the foreach()
* structures provided by the engine, but could be extended for use
diff --git a/Zend/zend_language_parser.c b/Zend/zend_language_parser.c
index c77105582..7040aa962 100644
--- a/Zend/zend_language_parser.c
+++ b/Zend/zend_language_parser.c
@@ -311,7 +311,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -326,7 +326,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_language_parser.y,v 1.160.2.2 2005/10/17 07:57:00 dmitry Exp $ */
+/* $Id: zend_language_parser.y,v 1.160.2.3 2006/01/04 23:53:04 andi Exp $ */
/*
* LALR shift/reduce conflicts and how they are resolved:
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index 0a9c10c42..3cd5df846 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -3,7 +3,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_language_parser.y,v 1.160.2.2 2005/10/17 07:57:00 dmitry Exp $ */
+/* $Id: zend_language_parser.y,v 1.160.2.3 2006/01/04 23:53:04 andi Exp $ */
/*
* LALR shift/reduce conflicts and how they are resolved:
diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c
index c099d24e1..9f70b4d35 100644
--- a/Zend/zend_language_scanner.c
+++ b/Zend/zend_language_scanner.c
@@ -359,7 +359,7 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
#define YY_NUM_RULES 160
#define YY_END_OF_BUFFER 161
-static yyconst short int yy_accept[1410] =
+static yyconst short int yy_accept[1411] =
{ 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -372,7 +372,7 @@ static yyconst short int yy_accept[1410] =
145, 159, 118, 142, 145, 141, 158, 159, 143, 159,
157, 155, 140, 159, 118, 38, 37, 101, 100, 127,
- 130, 130, 122, 123, 123, 121, 121, 121, 111, 0,
+ 130, 130, 160, 123, 123, 121, 121, 121, 111, 0,
111, 114, 112, 111, 119, 75, 0, 133, 0, 116,
83, 132, 90, 86, 0, 134, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 80, 70, 78,
@@ -386,136 +386,136 @@ static yyconst short int yy_accept[1410] =
117, 117, 117, 117, 117, 87, 89, 140, 144, 98,
36, 104, 0, 154, 150, 152, 154, 146, 118, 142,
147, 141, 0, 148, 149, 143, 151, 155, 140, 139,
- 139, 118, 0, 37, 100, 127, 129, 128, 122, 123,
- 124, 111, 0, 113, 0, 0, 73, 116, 132, 132,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 105, 0, 105, 103, 0, 0, 84, 72, 85, 131,
- 131, 117, 117, 117, 117, 117, 117, 92, 117, 117,
- 117, 117, 117, 117, 117, 117, 117, 2, 117, 117,
- 117, 117, 117, 117, 117, 117, 16, 117, 117, 117,
-
- 117, 117, 117, 117, 117, 40, 117, 117, 117, 117,
- 117, 117, 117, 117, 6, 117, 55, 42, 117, 93,
- 104, 152, 153, 111, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 125, 0, 0, 0,
- 117, 117, 117, 117, 117, 117, 117, 117, 117, 26,
- 117, 117, 117, 117, 117, 117, 117, 30, 12, 117,
- 117, 117, 117, 117, 117, 50, 1, 117, 117, 117,
- 117, 117, 117, 117, 117, 117, 117, 68, 117, 117,
- 117, 117, 117, 117, 117, 117, 117, 117, 117, 152,
- 153, 111, 0, 0, 0, 0, 0, 0, 0, 0,
-
- 43, 0, 0, 0, 0, 0, 0, 136, 136, 0,
- 117, 117, 117, 117, 117, 117, 117, 69, 28, 7,
- 32, 41, 4, 117, 117, 117, 117, 58, 117, 117,
- 11, 117, 117, 117, 62, 117, 117, 117, 117, 117,
- 117, 117, 57, 31, 117, 117, 117, 117, 117, 117,
- 117, 8, 66, 13, 111, 0, 115, 115, 0, 0,
- 0, 48, 0, 0, 0, 0, 0, 44, 0, 0,
+ 139, 118, 0, 37, 100, 127, 129, 128, 122, 122,
+ 123, 124, 111, 0, 113, 0, 0, 73, 116, 132,
+ 132, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 105, 0, 105, 103, 0, 0, 84, 72, 85,
+ 131, 131, 117, 117, 117, 117, 117, 117, 92, 117,
+ 117, 117, 117, 117, 117, 117, 117, 117, 2, 117,
+ 117, 117, 117, 117, 117, 117, 117, 16, 117, 117,
+
+ 117, 117, 117, 117, 117, 117, 40, 117, 117, 117,
+ 117, 117, 117, 117, 117, 6, 117, 55, 42, 117,
+ 93, 104, 152, 153, 111, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 125, 0, 0,
0, 117, 117, 117, 117, 117, 117, 117, 117, 117,
- 117, 10, 117, 17, 117, 117, 117, 117, 117, 56,
- 117, 117, 117, 117, 117, 117, 65, 117, 5, 60,
-
- 24, 111, 0, 0, 0, 46, 0, 0, 0, 0,
- 0, 49, 0, 117, 117, 117, 117, 117, 117, 117,
- 117, 20, 27, 117, 117, 117, 117, 34, 18, 117,
- 117, 51, 117, 117, 63, 117, 53, 111, 0, 0,
- 0, 0, 0, 47, 0, 45, 0, 117, 110, 117,
- 117, 109, 117, 61, 29, 117, 117, 117, 14, 3,
- 117, 117, 117, 117, 117, 117, 111, 0, 0, 0,
- 106, 117, 117, 117, 117, 117, 25, 117, 117, 117,
- 33, 64, 117, 111, 0, 0, 117, 117, 108, 21,
- 19, 35, 117, 22, 117, 111, 0, 0, 117, 117,
-
- 117, 117, 111, 0, 0, 107, 117, 52, 54, 111,
- 0, 0, 117, 111, 0, 0, 117, 111, 0, 0,
- 59, 111, 0, 0, 111, 0, 0, 0, 111, 0,
- 0, 0, 0, 0, 111, 0, 0, 0, 0, 111,
- 0, 0, 0, 0, 111, 0, 0, 0, 0, 112,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
-
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
-
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
-
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
-
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
-
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
-
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
-
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
- 111, 0, 111, 0, 111, 0, 111, 0, 111, 0,
-
- 111, 0, 111, 0, 111, 0, 111, 0, 0
+ 26, 117, 117, 117, 117, 117, 117, 117, 30, 12,
+ 117, 117, 117, 117, 117, 117, 50, 1, 117, 117,
+ 117, 117, 117, 117, 117, 117, 117, 117, 68, 117,
+ 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
+ 152, 153, 111, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 43, 0, 0, 0, 0, 0, 0, 136, 136,
+ 0, 117, 117, 117, 117, 117, 117, 117, 69, 28,
+ 7, 32, 41, 4, 117, 117, 117, 117, 58, 117,
+ 117, 11, 117, 117, 117, 62, 117, 117, 117, 117,
+ 117, 117, 117, 57, 31, 117, 117, 117, 117, 117,
+ 117, 117, 8, 66, 13, 111, 0, 115, 115, 0,
+ 0, 0, 48, 0, 0, 0, 0, 0, 44, 0,
+ 0, 0, 117, 117, 117, 117, 117, 117, 117, 117,
+ 117, 117, 10, 117, 17, 117, 117, 117, 117, 117,
+ 56, 117, 117, 117, 117, 117, 117, 65, 117, 5,
+
+ 60, 24, 111, 0, 0, 0, 46, 0, 0, 0,
+ 0, 0, 49, 0, 117, 117, 117, 117, 117, 117,
+ 117, 117, 20, 27, 117, 117, 117, 117, 34, 18,
+ 117, 117, 51, 117, 117, 63, 117, 53, 111, 0,
+ 0, 0, 0, 0, 47, 0, 45, 0, 117, 110,
+ 117, 117, 109, 117, 61, 29, 117, 117, 117, 14,
+ 3, 117, 117, 117, 117, 117, 117, 111, 0, 0,
+ 0, 106, 117, 117, 117, 117, 117, 25, 117, 117,
+ 117, 33, 64, 117, 111, 0, 0, 117, 117, 108,
+ 21, 19, 35, 117, 22, 117, 111, 0, 0, 117,
+
+ 117, 117, 117, 111, 0, 0, 107, 117, 52, 54,
+ 111, 0, 0, 117, 111, 0, 0, 117, 111, 0,
+ 0, 59, 111, 0, 0, 111, 0, 0, 0, 111,
+ 0, 0, 0, 0, 0, 111, 0, 0, 0, 0,
+ 111, 0, 0, 0, 0, 111, 0, 0, 0, 0,
+ 112, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 111,
+
+ 0, 111, 0, 111, 0, 111, 0, 111, 0, 0
} ;
static yyconst int yy_ec[256] =
@@ -552,426 +552,426 @@ static yyconst int yy_ec[256] =
static yyconst int yy_meta[63] =
{ 0,
- 1, 2, 3, 3, 4, 1, 4, 5, 6, 4,
- 7, 4, 4, 8, 4, 4, 4, 4, 4, 9,
- 9, 9, 4, 10, 11, 4, 6, 6, 1, 1,
- 4, 12, 1, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12, 12, 1,
+ 1, 2, 3, 3, 4, 1, 4, 5, 4, 4,
+ 6, 4, 4, 7, 4, 4, 4, 4, 4, 8,
+ 8, 8, 4, 9, 10, 4, 4, 4, 1, 1,
+ 4, 11, 1, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 1,
4, 1
} ;
-static yyconst short int yy_base[1830] =
+static yyconst short int yy_base[1831] =
{ 0,
- 7972, 7971, 0, 0, 62, 0, 114, 115, 121, 122,
- 123, 151, 210, 0, 272, 0, 7981, 7980, 7979, 7978,
- 132, 139, 7991, 7965, 121, 7998, 129, 7963, 131, 7998,
- 0, 112, 137, 135, 333, 7998, 7962, 143, 151, 150,
- 322, 322, 331, 7964, 320, 148, 153, 7959, 7959, 7952,
- 7998, 303, 7932, 328, 323, 344, 340, 7937, 0, 356,
- 7939, 7942, 7928, 305, 7940, 310, 99, 331, 7943, 7935,
- 7927, 7998, 331, 7998, 0, 7998, 408, 7947, 451, 376,
- 7998, 468, 0, 7940, 7964, 7941, 7998, 347, 7964, 457,
- 7998, 469, 470, 462, 481, 7998, 0, 7998, 0, 0,
-
- 7950, 7949, 0, 7998, 7964, 7939, 7998, 7938, 7939, 482,
- 7938, 7936, 460, 7925, 402, 7934, 481, 7998, 489, 0,
- 7998, 490, 7998, 7998, 363, 7998, 7956, 0, 7907, 7909,
- 7908, 7910, 7907, 7918, 7914, 7898, 7903, 7998, 7998, 7998,
- 7998, 7998, 7998, 478, 7998, 7935, 7998, 7998, 509, 515,
- 523, 528, 7998, 7896, 470, 7998, 7998, 7921, 7998, 7998,
- 7920, 509, 7998, 0, 515, 7893, 7907, 7892, 0, 7904,
- 468, 352, 7894, 465, 7902, 0, 7898, 7886, 7888, 7899,
- 7901, 473, 7887, 7882, 7885, 7883, 0, 7881, 505, 7877,
- 7876, 7871, 0, 476, 7891, 489, 7891, 7882, 7872, 7864,
-
- 7869, 7882, 7868, 7876, 7866, 7998, 7998, 0, 7998, 7998,
- 0, 548, 551, 7998, 7998, 554, 557, 7998, 0, 7883,
- 7998, 7885, 7884, 7998, 7998, 7907, 7998, 570, 591, 7998,
- 7909, 580, 595, 0, 0, 0, 7998, 7998, 0, 7998,
- 7998, 7886, 591, 7998, 7869, 7858, 7998, 0, 7998, 7905,
- 7856, 7858, 7851, 7856, 7850, 7859, 7867, 7849, 7847, 603,
- 588, 591, 600, 610, 7862, 7895, 7998, 7998, 7998, 7998,
- 7893, 7850, 573, 7860, 7851, 7854, 7838, 0, 7856, 7855,
- 7850, 7851, 7834, 7838, 565, 7839, 7849, 0, 7834, 7843,
- 7827, 586, 7834, 7825, 7839, 7842, 7837, 7838, 7838, 7827,
-
- 7826, 7817, 7831, 7830, 7814, 0, 582, 7813, 7820, 7810,
- 7809, 7809, 7808, 7812, 0, 7821, 0, 0, 7813, 0,
- 619, 613, 630, 7832, 650, 7807, 7813, 7820, 7808, 7817,
- 7817, 658, 7812, 7804, 7806, 7809, 659, 7795, 7843, 632,
- 7810, 7798, 7795, 7796, 7793, 7786, 7787, 7779, 7792, 0,
- 7794, 7782, 7795, 7779, 7789, 7796, 7775, 0, 7786, 7769,
- 7788, 7777, 7785, 7767, 7781, 0, 0, 7774, 7775, 7785,
- 7765, 7783, 7778, 7761, 7780, 7762, 7759, 0, 7758, 7776,
- 7771, 7766, 7765, 7755, 7763, 7768, 7747, 7749, 7763, 7998,
- 7998, 7775, 661, 670, 7750, 7740, 674, 7752, 7743, 675,
-
- 7998, 7755, 7758, 677, 7746, 7739, 7749, 7998, 7787, 677,
- 7737, 7750, 7751, 7733, 7747, 7743, 7749, 0, 0, 0,
- 0, 0, 0, 7735, 7730, 7735, 7740, 0, 7742, 7726,
- 0, 7734, 7733, 2996, 0, 2996, 2988, 2984, 2982, 2990,
- 2979, 2972, 0, 0, 2957, 2973, 2972, 2956, 2959, 2969,
- 2963, 0, 0, 0, 2978, 673, 7998, 2985, 2934, 681,
- 682, 7998, 2933, 2926, 2919, 2895, 690, 7998, 2907, 691,
- 2895, 2891, 2908, 2884, 2904, 2903, 2886, 2897, 2872, 2880,
- 2864, 0, 2856, 2859, 2839, 2846, 2818, 2823, 2744, 0,
- 2753, 2752, 2753, 2754, 2749, 2732, 0, 2746, 0, 0,
-
- 0, 2758, 682, 712, 695, 7998, 2735, 2730, 698, 704,
- 707, 7998, 2727, 2747, 2746, 2735, 2740, 2743, 2737, 2720,
- 2734, 0, 0, 2737, 2736, 2732, 2729, 0, 0, 2718,
- 2717, 2731, 2720, 2721, 0, 2718, 2720, 2726, 696, 724,
- 716, 717, 720, 7998, 729, 7998, 733, 2714, 0, 2697,
- 2696, 0, 2710, 0, 0, 2690, 2703, 2697, 0, 0,
- 2682, 2684, 2655, 2662, 2662, 2650, 2671, 729, 2659, 737,
- 0, 2642, 2640, 2631, 2622, 2616, 0, 2602, 2606, 2611,
- 0, 0, 2596, 2615, 734, 2584, 2596, 2568, 0, 0,
- 0, 0, 2578, 0, 2575, 2583, 738, 2567, 2567, 2555,
-
- 2556, 2553, 2560, 740, 2528, 0, 2527, 0, 0, 2546,
- 742, 2534, 2527, 2537, 746, 2511, 2488, 2511, 747, 2494,
- 0, 2504, 752, 780, 2501, 780, 793, 807, 2500, 792,
- 819, 2473, 2470, 2452, 2465, 803, 2445, 2443, 2434, 2456,
- 815, 2431, 2430, 812, 2435, 817, 2441, 2433, 831, 7998,
- 2415, 829, 2413, 837, 2412, 838, 2410, 850, 2409, 851,
- 2408, 852, 2376, 863, 2369, 873, 2368, 883, 2367, 884,
- 2366, 885, 2365, 891, 2364, 896, 2363, 898, 2362, 905,
- 2333, 913, 2330, 919, 2323, 930, 2321, 931, 2320, 936,
- 2319, 942, 2318, 944, 2316, 951, 2301, 953, 2298, 959,
-
- 2287, 964, 2284, 965, 2277, 976, 2275, 982, 2273, 990,
- 2272, 997, 2270, 999, 2261, 1004, 2255, 1005, 2252, 1010,
- 2250, 1011, 2241, 1012, 2238, 1022, 2229, 1043, 2227, 1044,
- 2224, 1045, 2221, 1050, 2209, 1051, 2207, 1052, 2206, 1056,
- 2204, 1057, 2202, 1058, 2195, 1089, 2192, 1090, 2181, 1091,
- 2163, 1096, 2162, 1097, 2161, 1098, 2160, 1102, 2159, 1103,
- 2158, 1104, 2156, 1111, 2149, 1136, 2130, 1137, 2117, 1142,
- 2116, 1143, 2115, 1144, 2114, 1148, 2113, 1149, 2112, 1150,
- 2110, 1157, 2103, 1178, 2071, 1182, 2070, 1183, 2069, 1188,
- 2067, 1189, 2066, 1190, 2064, 1195, 2063, 1196, 2060, 1203,
-
- 2057, 1218, 2028, 1224, 2025, 1228, 2024, 1229, 2023, 1235,
- 2021, 1236, 2018, 1241, 2014, 1249, 2011, 1250, 1988, 1258,
- 1985, 1264, 1982, 1270, 1979, 1275, 1978, 1281, 1975, 1287,
- 1968, 1295, 1965, 1296, 1956, 1304, 1953, 1309, 1942, 1310,
- 1939, 1316, 1936, 1317, 1933, 1321, 1932, 1327, 1924, 1342,
- 1922, 1349, 1919, 1350, 1916, 1355, 1910, 1356, 1907, 1357,
- 1897, 1362, 1896, 1363, 1893, 1367, 1890, 1388, 1887, 1395,
- 1876, 1396, 1864, 1397, 1861, 1401, 1857, 1402, 1854, 1403,
- 1851, 1408, 1850, 1409, 1847, 1434, 1844, 1441, 1818, 1442,
- 1815, 1443, 1811, 1447, 1809, 1448, 1808, 1449, 1806, 1454,
-
- 1805, 1455, 1804, 1456, 1785, 1487, 1772, 1488, 1769, 1489,
- 1765, 1493, 1763, 1494, 1762, 1495, 1760, 1500, 1759, 1501,
- 1758, 1502, 1726, 1523, 1719, 1533, 1718, 1534, 1717, 1535,
- 1716, 1540, 139, 1541, 157, 1546, 312, 1548, 339, 1555,
- 382, 1563, 454, 1569, 481, 1580, 498, 1581, 502, 1586,
- 507, 1592, 521, 1594, 527, 1601, 530, 1603, 534, 1609,
- 555, 1614, 557, 1615, 576, 1626, 589, 1632, 660, 1640,
- 674, 1647, 698, 1649, 707, 1654, 719, 1655, 720, 1660,
- 721, 1661, 725, 1662, 727, 1672, 728, 1693, 733, 1694,
- 748, 1695, 751, 1700, 753, 1701, 754, 1702, 760, 1706,
-
- 762, 1707, 763, 1708, 766, 1739, 768, 1740, 775, 1741,
- 777, 1746, 778, 1747, 782, 1748, 802, 1752, 804, 1753,
- 811, 1754, 812, 1761, 816, 1786, 823, 1787, 824, 1792,
- 825, 1793, 826, 1794, 827, 1798, 828, 1799, 839, 1800,
- 845, 1807, 846, 1828, 848, 1832, 849, 1833, 858, 1838,
- 859, 1839, 860, 1840, 861, 1845, 862, 1846, 870, 1853,
- 871, 1868, 872, 1874, 874, 1878, 881, 1879, 892, 1885,
- 893, 1886, 895, 1891, 902, 1899, 904, 1900, 906, 1908,
- 907, 1914, 909, 1920, 917, 1925, 921, 1931, 924, 1937,
- 927, 1945, 929, 1946, 938, 1954, 941, 1959, 950, 1960,
-
- 952, 1966, 955, 1967, 961, 1971, 970, 1977, 972, 1992,
- 973, 1999, 975, 2000, 977, 2005, 984, 2006, 987, 2007,
- 998, 2012, 1001, 2013, 1016, 2017, 1018, 2038, 1019, 2045,
- 1020, 2046, 1021, 2047, 1023, 2051, 1030, 2052, 1033, 2053,
- 1062, 2058, 1063, 2059, 1064, 2084, 1065, 2091, 1066, 2092,
- 1067, 2093, 1068, 2097, 1069, 2098, 1076, 2099, 1108, 2104,
- 1109, 2105, 1110, 2106, 1112, 2137, 1113, 2138, 1115, 2139,
- 1119, 2143, 1122, 2144, 1135, 2145, 1154, 2150, 1155, 2151,
- 1156, 2152, 1158, 2173, 1159, 2183, 1161, 2184, 1165, 2185,
- 1168, 2190, 1194, 2191, 1197, 2196, 1200, 2198, 1201, 2205,
-
- 1204, 2213, 1207, 2219, 1211, 2230, 1214, 2231, 1226, 2236,
- 1237, 2242, 1240, 2244, 1243, 2251, 1246, 2253, 1247, 2259,
- 1257, 2264, 1260, 2265, 1266, 2276, 1269, 2282, 1272, 2290,
- 1274, 2297, 1282, 2299, 1283, 2304, 1286, 2305, 1289, 2310,
- 1292, 2311, 1303, 2312, 1306, 2322, 1315, 2343, 1318, 2344,
- 1325, 2345, 1328, 2350, 1329, 2351, 1332, 2352, 1335, 2356,
- 1338, 2357, 1361, 2358, 1364, 2389, 1368, 2390, 1371, 2391,
- 1373, 2396, 1374, 2397, 1375, 2398, 1378, 2402, 1407, 2403,
- 1410, 2404, 1413, 2411, 1414, 2436, 1416, 2437, 1417, 2442,
- 1419, 2443, 1420, 2444, 1421, 2448, 1453, 2449, 1460, 2450,
-
- 1462, 2457, 1463, 2478, 1464, 2482, 1465, 2483, 1466, 2488,
- 1467, 2489, 1480, 2490, 1499, 2495, 1506, 2496, 1508, 2503,
- 1509, 2518, 1510, 2524, 1511, 2528, 1512, 2529, 1513, 2535,
- 1531, 2536, 1542, 2541, 1545, 2549, 1552, 2550, 1554, 2558,
- 1556, 2564, 1557, 2570, 1559, 2575, 1571, 2581, 1574, 2587,
- 1577, 2595, 1579, 2596, 1588, 2604, 1591, 2609, 1600, 2610,
- 1602, 2616, 1605, 2617, 1611, 2621, 1620, 2627, 1622, 2642,
- 1623, 2649, 1625, 2650, 1627, 2655, 1634, 2656, 1637, 2657,
- 1648, 2662, 1651, 2663, 1666, 2667, 1668, 2688, 1669, 2695,
- 1670, 2696, 1671, 2697, 1673, 2701, 1680, 2702, 1683, 2703,
-
- 1712, 2708, 1713, 2709, 1714, 2734, 7998, 2741, 7998, 2793,
- 2805, 2817, 2829, 2841, 2853, 2865, 1728, 2877, 2881, 2892,
- 2903, 2907, 2919, 2929, 2933, 2937, 2949, 2961, 2973, 2977,
- 2989, 3000, 3012, 3022, 3034, 3046, 3058, 3070, 3082, 3094,
- 3106, 3118, 3130, 3142, 3154, 3166, 3178, 3190, 3202, 3214,
- 3226, 3238, 3250, 3262, 3274, 3286, 3298, 3310, 3322, 3334,
- 3346, 3358, 3370, 3382, 3394, 3406, 3418, 3430, 3442, 3454,
- 3466, 3478, 3490, 3502, 3514, 3526, 3538, 3550, 3562, 3574,
- 3586, 3598, 3610, 3622, 3634, 3646, 3658, 3670, 3682, 3694,
- 3706, 3718, 3730, 3742, 3754, 3766, 3778, 3790, 3802, 3814,
-
- 3826, 3838, 3850, 3862, 3874, 3886, 3898, 3910, 3922, 3934,
- 3946, 3958, 3970, 3982, 3994, 4006, 4018, 4030, 4042, 4054,
- 4066, 4078, 4090, 4102, 4114, 4126, 4138, 4150, 4162, 4174,
- 4186, 4198, 4210, 4222, 4234, 4246, 4258, 4270, 4282, 4294,
- 4306, 4318, 4330, 4342, 4354, 4366, 4378, 4390, 4402, 4414,
- 4426, 4438, 4450, 4462, 4474, 4486, 4498, 4510, 4522, 4534,
- 4546, 4558, 4570, 4582, 4594, 4606, 4618, 4630, 4642, 4654,
- 4666, 4678, 4690, 4702, 4714, 4726, 4738, 4750, 4762, 4774,
- 4786, 4798, 4810, 4822, 4834, 4846, 4858, 4870, 4882, 4894,
- 4906, 4918, 4930, 4942, 4954, 4966, 4978, 4990, 5002, 5014,
-
- 5026, 5038, 5050, 5062, 5074, 5086, 5098, 5110, 5122, 5134,
- 5146, 5158, 5170, 5182, 5194, 5206, 5218, 5230, 5242, 5254,
- 5266, 5278, 5290, 5302, 5314, 5326, 5338, 5350, 5362, 5374,
- 5386, 5398, 5410, 5422, 5434, 5446, 5458, 5470, 5482, 5494,
- 5506, 5518, 5530, 5542, 5554, 5566, 5578, 5590, 5602, 5614,
- 5626, 5638, 5650, 5662, 5674, 5686, 5698, 5710, 5722, 5734,
- 5746, 5758, 5770, 5782, 5794, 5806, 5818, 5830, 5842, 5854,
- 5866, 5878, 5890, 5902, 5914, 5926, 5938, 5950, 5962, 5974,
- 5986, 5998, 6010, 6022, 6034, 6046, 6058, 6070, 6082, 6094,
- 6106, 6118, 6130, 6142, 6154, 6166, 6178, 6190, 6202, 6214,
-
- 6226, 6238, 6250, 6262, 6274, 6286, 6298, 6310, 6322, 6334,
- 6346, 6358, 6370, 6382, 6394, 6406, 6418, 6430, 6442, 6454,
- 6466, 6478, 6490, 6502, 6514, 6526, 6538, 6550, 6562, 6574,
- 6586, 6598, 6610, 6622, 6634, 6646, 6658, 6670, 6682, 6694,
- 6706, 6718, 6730, 6742, 6754, 6766, 6778, 6790, 6802, 6814,
- 6826, 6838, 6850, 6862, 6874, 6886, 6898, 6910, 6922, 6934,
- 6946, 6958, 6970, 6982, 6994, 7006, 7018, 7030, 7042, 7054,
- 7066, 7078, 7090, 7102, 7114, 7126, 7138, 7150, 7162, 7174,
- 7186, 7198, 7210, 7222, 7234, 7246, 7258, 7270, 7282, 7294,
- 7306, 7318, 7330, 7342, 7354, 7366, 7378, 7390, 7402, 7414,
-
- 7426, 7438, 7450, 7462, 7474, 7486, 7498, 7510, 7522, 7534,
- 7546, 7558, 7570, 7582, 7594, 7606, 7618, 7630, 7642, 7654,
- 7666, 7678, 7690, 7702, 7714, 7726, 7738, 7750, 7762
+ 7573, 7572, 0, 0, 62, 0, 114, 115, 121, 122,
+ 123, 151, 210, 0, 272, 0, 7582, 7581, 7580, 7579,
+ 132, 139, 7592, 7566, 121, 7599, 129, 7564, 131, 7599,
+ 0, 112, 137, 135, 333, 7599, 7563, 143, 151, 150,
+ 322, 322, 331, 7565, 320, 148, 153, 7560, 7560, 7553,
+ 7599, 303, 7533, 328, 323, 344, 340, 7538, 0, 356,
+ 7540, 7543, 7529, 305, 7541, 310, 99, 331, 7544, 7536,
+ 7528, 7599, 331, 7599, 0, 7599, 408, 7548, 451, 376,
+ 7599, 468, 0, 7541, 7565, 7542, 7599, 347, 7565, 457,
+ 7599, 469, 470, 462, 481, 7599, 0, 7599, 0, 0,
+
+ 7551, 7550, 483, 7599, 7565, 7540, 7599, 7539, 7540, 484,
+ 7539, 7537, 469, 7526, 402, 7535, 485, 7599, 491, 0,
+ 7599, 493, 7599, 7599, 363, 7599, 7557, 0, 7508, 7510,
+ 7509, 7511, 7508, 7519, 7515, 7499, 7504, 7599, 7599, 7599,
+ 7599, 7599, 7599, 509, 7599, 7536, 7599, 7599, 512, 517,
+ 531, 522, 7599, 7497, 475, 7599, 7599, 7522, 7599, 7599,
+ 7521, 503, 7599, 0, 526, 7494, 7508, 7493, 0, 7505,
+ 468, 352, 7495, 477, 7503, 0, 7499, 7487, 7489, 7500,
+ 7502, 521, 7488, 7483, 7486, 7484, 0, 7482, 488, 7478,
+ 7477, 7472, 0, 456, 7492, 473, 7492, 7483, 7473, 7465,
+
+ 7470, 7483, 7469, 7477, 7467, 7599, 7599, 0, 7599, 7599,
+ 0, 548, 555, 7599, 7599, 558, 561, 7599, 0, 7484,
+ 7599, 7486, 7485, 7599, 7599, 7508, 7599, 574, 595, 7599,
+ 7510, 584, 599, 0, 0, 0, 7599, 7599, 606, 7599,
+ 7599, 7599, 7487, 595, 7599, 7470, 7459, 7599, 0, 7599,
+ 7506, 7457, 7459, 7452, 7457, 7451, 7460, 7468, 7450, 7448,
+ 609, 597, 604, 609, 616, 7463, 7496, 7599, 7599, 7599,
+ 7599, 7494, 7451, 512, 7461, 7452, 7455, 7439, 0, 7457,
+ 7456, 7451, 7452, 7435, 7439, 569, 7440, 7450, 0, 7435,
+ 7444, 7428, 604, 7435, 7426, 7440, 7443, 7438, 7439, 7439,
+
+ 7428, 7427, 7418, 7432, 7431, 7415, 0, 585, 7414, 7421,
+ 7411, 7410, 7410, 7409, 7413, 0, 7422, 0, 0, 7414,
+ 0, 637, 624, 643, 7433, 658, 7408, 7414, 3075, 3063,
+ 3071, 3071, 682, 3066, 3058, 3047, 3050, 666, 3036, 3084,
+ 645, 3051, 3039, 3036, 3037, 3021, 3014, 2988, 2973, 2986,
+ 0, 2986, 2974, 2985, 2967, 2977, 2984, 2963, 0, 2968,
+ 2945, 2964, 2939, 2945, 2923, 2937, 0, 0, 2912, 2908,
+ 2853, 2833, 2851, 2846, 2829, 2848, 2830, 2825, 0, 2824,
+ 2842, 2837, 2831, 2830, 2820, 2828, 2833, 2812, 2814, 2828,
+ 7599, 7599, 2840, 676, 685, 2814, 2804, 689, 2815, 2805,
+
+ 571, 7599, 2814, 2812, 603, 2799, 2790, 2799, 7599, 2837,
+ 658, 2787, 2800, 2792, 2773, 2785, 2772, 2775, 0, 0,
+ 0, 0, 0, 0, 2756, 2749, 2751, 2754, 0, 2746,
+ 2728, 0, 2731, 2730, 2733, 0, 2731, 2722, 2705, 2703,
+ 2707, 2695, 2702, 0, 0, 2686, 2701, 2691, 2673, 2673,
+ 2678, 2666, 0, 0, 0, 2679, 681, 7599, 2694, 2641,
+ 690, 692, 7599, 2659, 2644, 2637, 2620, 694, 7599, 2632,
+ 695, 2622, 2616, 2633, 2598, 2618, 2613, 2595, 2606, 2585,
+ 2600, 2583, 0, 2590, 2587, 2568, 2571, 2561, 2566, 2558,
+ 0, 2566, 2560, 2559, 2559, 2548, 2530, 0, 2538, 0,
+
+ 0, 0, 2549, 689, 709, 713, 7599, 2526, 2512, 716,
+ 717, 719, 7599, 2508, 2526, 2516, 2504, 2508, 2511, 2494,
+ 2475, 2484, 0, 0, 2483, 2480, 2472, 2469, 0, 0,
+ 2458, 2455, 2467, 2449, 2449, 0, 2446, 2445, 2449, 714,
+ 732, 735, 736, 738, 7599, 741, 7599, 742, 2440, 0,
+ 2414, 2411, 0, 2423, 0, 0, 2398, 2411, 2403, 0,
+ 0, 2389, 2384, 2381, 2387, 2386, 2364, 2385, 722, 2375,
+ 753, 0, 2361, 2361, 2371, 2362, 2357, 0, 2334, 2333,
+ 2339, 0, 0, 2330, 2348, 743, 2323, 2324, 2306, 0,
+ 0, 0, 0, 2316, 0, 2315, 2325, 750, 2308, 2309,
+
+ 2288, 2288, 2283, 2293, 751, 2257, 0, 2264, 0, 0,
+ 2283, 756, 2270, 2263, 2273, 758, 2251, 2230, 2254, 763,
+ 2240, 0, 2241, 764, 759, 2238, 773, 802, 815, 2232,
+ 784, 827, 2203, 2202, 2208, 2223, 814, 2204, 2201, 2178,
+ 2197, 815, 2171, 2170, 842, 2187, 823, 2203, 2196, 850,
+ 7599, 2180, 832, 2177, 840, 2167, 846, 2165, 853, 2157,
+ 854, 2154, 861, 2152, 863, 2142, 871, 2139, 876, 2135,
+ 884, 2133, 886, 2127, 891, 2124, 893, 2122, 899, 2121,
+ 901, 2120, 916, 2118, 921, 2117, 922, 2103, 930, 2096,
+ 931, 2092, 939, 2090, 951, 2089, 952, 2088, 953, 2087,
+
+ 960, 2083, 961, 2080, 962, 2078, 983, 2066, 990, 2061,
+ 991, 2060, 992, 2059, 997, 2058, 998, 2057, 1012, 2046,
+ 1020, 2043, 1027, 2037, 1029, 2036, 1037, 2032, 1038, 2031,
+ 1042, 2028, 1049, 2021, 1050, 2014, 1059, 2011, 1060, 2010,
+ 1067, 2001, 1071, 1999, 1082, 1989, 1088, 1988, 1089, 1984,
+ 1096, 1981, 1097, 1969, 1111, 1967, 1117, 1962, 1118, 1961,
+ 1119, 1960, 1126, 1959, 1128, 1958, 1148, 1956, 1149, 1955,
+ 1156, 1952, 1157, 1938, 1158, 1937, 1163, 1930, 1170, 1926,
+ 1178, 1925, 1188, 1924, 1193, 1923, 1195, 1922, 1203, 1921,
+ 1208, 1912, 1210, 1903, 1216, 1900, 1218, 1894, 1223, 1893,
+
+ 1225, 1891, 1233, 1885, 1248, 1882, 1254, 1880, 1255, 1870,
+ 1256, 1865, 1262, 1863, 1263, 1862, 1269, 1861, 1277, 1860,
+ 1284, 1850, 1292, 1848, 1294, 1845, 1302, 1835, 1307, 1831,
+ 1309, 1825, 1314, 1822, 1315, 1818, 1322, 1815, 1324, 1804,
+ 1332, 1801, 1344, 1795, 1353, 1794, 1354, 1792, 1355, 1789,
+ 1361, 1786, 1362, 1772, 1366, 1771, 1376, 1766, 1383, 1764,
+ 1384, 1763, 1391, 1761, 1401, 1759, 1406, 1749, 1412, 1746,
+ 1413, 1742, 1414, 1736, 1421, 1729, 1423, 1726, 1435, 1719,
+ 1443, 1716, 1452, 1715, 1453, 1704, 1458, 1697, 1460, 1695,
+ 1465, 1694, 1473, 1693, 1475, 1690, 1483, 1687, 1488, 1673,
+
+ 1490, 1672, 1498, 1667, 1505, 1665, 1511, 1664, 1513, 1661,
+ 1519, 1660, 1520, 1658, 1528, 1657, 1534, 1647, 1542, 1643,
+ 1549, 1638, 1551, 1635, 1557, 1629, 1559, 1628, 1564, 1626,
+ 1572, 1620, 1574, 139, 1579, 157, 1587, 312, 1589, 339,
+ 1597, 382, 1604, 454, 1609, 502, 1610, 520, 1618, 524,
+ 1619, 539, 1627, 561, 1639, 589, 1641, 602, 1648, 614,
+ 1649, 617, 1650, 641, 1656, 668, 1671, 674, 1678, 675,
+ 1679, 691, 1685, 697, 1686, 699, 1696, 700, 1700, 728,
+ 1707, 733, 1708, 739, 1717, 745, 1718, 762, 1725, 765,
+ 1730, 769, 1738, 771, 1740, 772, 1747, 774, 1748, 775,
+
+ 1753, 782, 1755, 786, 1770, 788, 1776, 789, 1778, 795,
+ 1784, 797, 1785, 802, 1793, 809, 1799, 810, 1806, 812,
+ 1807, 822, 1814, 825, 1816, 831, 1824, 833, 1829, 834,
+ 1837, 836, 1839, 848, 1844, 858, 1846, 862, 1852, 865,
+ 1854, 869, 1869, 872, 1874, 878, 1875, 882, 1883, 892,
+ 1884, 895, 1892, 897, 1904, 907, 1905, 908, 1906, 909,
+ 1913, 910, 1914, 912, 1915, 917, 1936, 927, 1943, 929,
+ 1944, 932, 1945, 938, 1950, 940, 1951, 941, 1965, 947,
+ 1973, 950, 1980, 959, 1982, 968, 1990, 969, 1991, 970,
+ 1995, 971, 2002, 972, 2003, 973, 2012, 977, 2013, 984,
+
+ 2020, 985, 2024, 999, 2035, 1002, 2041, 1003, 2042, 1005,
+ 2049, 1006, 2050, 1007, 2064, 1008, 2070, 1009, 2071, 1014,
+ 2072, 1016, 2079, 1028, 2081, 1031, 2101, 1035, 2102, 1036,
+ 2109, 1046, 2110, 1048, 2111, 1057, 2116, 1058, 2123, 1061,
+ 2131, 1068, 2141, 1075, 2146, 1078, 2148, 1079, 2156, 1083,
+ 2161, 1084, 2163, 1090, 2169, 1093, 2171, 1104, 2176, 1105,
+ 2178, 1106, 2186, 1107, 2201, 1108, 2207, 1113, 2208, 1125,
+ 2209, 1127, 2215, 1130, 2216, 1134, 2222, 1135, 2230, 1136,
+ 2237, 1137, 2245, 1139, 2247, 1143, 2255, 1150, 2260, 1164,
+ 2262, 1165, 2267, 1167, 2268, 1168, 2275, 1169, 2277, 1171,
+
+ 2285, 1174, 2297, 1180, 2306, 1182, 2307, 1186, 2308, 1189,
+ 2314, 1199, 2315, 1201, 2319, 1204, 2329, 1212, 2336, 1214,
+ 2337, 1224, 2344, 1227, 2354, 1229, 2359, 1231, 2365, 1234,
+ 2366, 1241, 2367, 1242, 2374, 1244, 2376, 1249, 2388, 1264,
+ 2396, 1267, 2405, 1270, 2406, 1271, 2411, 1273, 2413, 1274,
+ 2418, 1279, 2426, 1285, 2428, 1288, 2436, 1300, 2441, 1301,
+ 2443, 1303, 2451, 1313, 2458, 1320, 2464, 1323, 2466, 1326,
+ 2472, 1330, 2473, 1331, 2481, 1333, 2487, 1340, 2495, 1343,
+ 2502, 1348, 2504, 1352, 2510, 1363, 2512, 1370, 2517, 1372,
+ 2525, 1373, 2527, 1374, 2532, 1377, 2540, 1378, 2542, 1392,
+
+ 2550, 1395, 2557, 1399, 2562, 1400, 2563, 1402, 2571, 1408,
+ 2572, 1420, 2580, 1422, 2592, 1425, 2594, 1429, 2601, 1430,
+ 2602, 1431, 2603, 1432, 2609, 1434, 2624, 1445, 2631, 1447,
+ 2632, 1451, 2638, 1454, 2639, 1464, 2649, 1466, 2653, 1469,
+ 2660, 1471, 2661, 1477, 2670, 1481, 2671, 1484, 2678, 1494,
+ 2683, 1496, 2691, 1499, 2693, 1506, 2700, 1507, 2701, 1509,
+ 2706, 1521, 2708, 1524, 2723, 1527, 2729, 1529, 2731, 1530,
+ 2737, 1536, 2738, 1539, 2746, 1544, 2752, 1550, 2759, 1553,
+ 2760, 1565, 2767, 1566, 2769, 1568, 2777, 1570, 2782, 1580,
+ 2790, 1583, 2792, 1585, 2797, 1595, 2799, 1596, 2805, 1598,
+
+ 2807, 1605, 2822, 1608, 2827, 1615, 2828, 7599, 2836, 7599,
+ 2888, 2899, 2910, 2921, 2932, 2943, 2954, 1631, 2965, 2969,
+ 2979, 2989, 2993, 3004, 3013, 3017, 3021, 3032, 3043, 3054,
+ 3058, 3069, 3079, 3090, 3099, 3110, 3121, 3132, 3143, 3154,
+ 3165, 3176, 3187, 3198, 3209, 3220, 3231, 3242, 3253, 3264,
+ 3275, 3286, 3297, 3308, 3319, 3330, 3341, 3352, 3363, 3374,
+ 3385, 3396, 3407, 3418, 3429, 3440, 3451, 3462, 3473, 3484,
+ 3495, 3506, 3517, 3528, 3539, 3550, 3561, 3572, 3583, 3594,
+ 3605, 3616, 3627, 3638, 3649, 3660, 3671, 3682, 3693, 3704,
+ 3715, 3726, 3737, 3748, 3759, 3770, 3781, 3792, 3803, 3814,
+
+ 3825, 3836, 3847, 3858, 3869, 3880, 3891, 3902, 3913, 3924,
+ 3935, 3946, 3957, 3968, 3979, 3990, 4001, 4012, 4023, 4034,
+ 4045, 4056, 4067, 4078, 4089, 4100, 4111, 4122, 4133, 4144,
+ 4155, 4166, 4177, 4188, 4199, 4210, 4221, 4232, 4243, 4254,
+ 4265, 4276, 4287, 4298, 4309, 4320, 4331, 4342, 4353, 4364,
+ 4375, 4386, 4397, 4408, 4419, 4430, 4441, 4452, 4463, 4474,
+ 4485, 4496, 4507, 4518, 4529, 4540, 4551, 4562, 4573, 4584,
+ 4595, 4606, 4617, 4628, 4639, 4650, 4661, 4672, 4683, 4694,
+ 4705, 4716, 4727, 4738, 4749, 4760, 4771, 4782, 4793, 4804,
+ 4815, 4826, 4837, 4848, 4859, 4870, 4881, 4892, 4903, 4914,
+
+ 4925, 4936, 4947, 4958, 4969, 4980, 4991, 5002, 5013, 5024,
+ 5035, 5046, 5057, 5068, 5079, 5090, 5101, 5112, 5123, 5134,
+ 5145, 5156, 5167, 5178, 5189, 5200, 5211, 5222, 5233, 5244,
+ 5255, 5266, 5277, 5288, 5299, 5310, 5321, 5332, 5343, 5354,
+ 5365, 5376, 5387, 5398, 5409, 5420, 5431, 5442, 5453, 5464,
+ 5475, 5486, 5497, 5508, 5519, 5530, 5541, 5552, 5563, 5574,
+ 5585, 5596, 5607, 5618, 5629, 5640, 5651, 5662, 5673, 5684,
+ 5695, 5706, 5717, 5728, 5739, 5750, 5761, 5772, 5783, 5794,
+ 5805, 5816, 5827, 5838, 5849, 5860, 5871, 5882, 5893, 5904,
+ 5915, 5926, 5937, 5948, 5959, 5970, 5981, 5992, 6003, 6014,
+
+ 6025, 6036, 6047, 6058, 6069, 6080, 6091, 6102, 6113, 6124,
+ 6135, 6146, 6157, 6168, 6179, 6190, 6201, 6212, 6223, 6234,
+ 6245, 6256, 6267, 6278, 6289, 6300, 6311, 6322, 6333, 6344,
+ 6355, 6366, 6377, 6388, 6399, 6410, 6421, 6432, 6443, 6454,
+ 6465, 6476, 6487, 6498, 6509, 6520, 6531, 6542, 6553, 6564,
+ 6575, 6586, 6597, 6608, 6619, 6630, 6641, 6652, 6663, 6674,
+ 6685, 6696, 6707, 6718, 6729, 6740, 6751, 6762, 6773, 6784,
+ 6795, 6806, 6817, 6828, 6839, 6850, 6861, 6872, 6883, 6894,
+ 6905, 6916, 6927, 6938, 6949, 6960, 6971, 6982, 6993, 7004,
+ 7015, 7026, 7037, 7048, 7059, 7070, 7081, 7092, 7103, 7114,
+
+ 7125, 7136, 7147, 7158, 7169, 7180, 7191, 7202, 7213, 7224,
+ 7235, 7246, 7257, 7268, 7279, 7290, 7301, 7312, 7323, 7334,
+ 7345, 7356, 7367, 7378, 7389, 7400, 7411, 7422, 7433, 7444
} ;
-static yyconst short int yy_def[1830] =
+static yyconst short int yy_def[1831] =
{ 0,
- 1410, 1410, 1409, 3, 1409, 5, 1411, 1411, 5, 5,
- 5, 5, 1409, 13, 1409, 15, 1412, 1412, 1412, 1412,
- 1413, 1413, 1409, 1414, 1415, 1409, 1409, 1409, 1416, 1409,
- 1417, 1409, 1409, 1418, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1419,
- 1409, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1409, 1409, 1409, 1420, 1409, 1409, 1420, 1409, 1409,
- 1409, 1421, 1422, 1409, 1409, 1423, 1409, 1423, 1409, 1421,
- 1409, 1409, 1420, 1421, 1424, 1409, 1425, 1409, 1426, 1427,
-
- 1409, 1409, 1428, 1409, 1409, 1409, 1409, 1409, 1429, 1414,
- 1414, 1409, 1409, 1409, 1409, 1409, 1416, 1409, 1416, 1430,
- 1409, 1409, 1409, 1409, 1418, 1409, 1418, 35, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
-
- 1419, 1419, 1419, 1419, 1419, 1409, 1409, 1420, 1409, 1409,
- 1420, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1422, 1409,
- 1409, 1423, 1423, 1409, 1409, 1409, 1409, 1409, 1420, 1409,
- 1409, 1424, 1409, 1425, 1426, 1427, 1409, 1409, 1428, 1409,
- 1409, 1431, 1429, 1409, 1409, 1409, 1409, 1430, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1432, 1409, 1409, 1409, 1409,
- 1409, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
-
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1409, 1409, 1409, 1433, 1431, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1432, 1434,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1409,
- 1409, 1435, 1433, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
-
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1434,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1436, 1435, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
-
- 1419, 1437, 1436, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1438, 1437, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1419, 1439, 1438, 1409, 1409,
- 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1440, 1439, 1409, 1419, 1419, 1419, 1419,
- 1419, 1419, 1419, 1419, 1419, 1441, 1440, 1409, 1419, 1419,
-
- 1419, 1419, 1442, 1441, 1409, 1419, 1419, 1419, 1419, 1443,
- 1442, 1409, 1419, 1444, 1443, 1409, 1419, 1445, 1444, 1409,
- 1419, 1446, 1445, 1409, 1447, 1446, 1409, 1409, 1448, 1447,
- 1409, 1409, 1409, 1409, 1449, 1448, 1409, 1409, 1409, 1450,
- 1449, 1409, 1409, 1409, 1451, 1450, 1409, 1409, 1409, 1409,
- 1452, 1451, 1453, 1452, 1454, 1453, 1455, 1454, 1456, 1455,
- 1457, 1456, 1458, 1457, 1459, 1458, 1460, 1459, 1461, 1460,
- 1462, 1461, 1463, 1462, 1464, 1463, 1465, 1464, 1466, 1465,
- 1467, 1466, 1468, 1467, 1469, 1468, 1470, 1469, 1471, 1470,
- 1472, 1471, 1473, 1472, 1474, 1473, 1475, 1474, 1476, 1475,
-
- 1477, 1476, 1478, 1477, 1479, 1478, 1480, 1479, 1481, 1480,
- 1482, 1481, 1483, 1482, 1484, 1483, 1485, 1484, 1486, 1485,
- 1487, 1486, 1488, 1487, 1489, 1488, 1490, 1489, 1491, 1490,
- 1492, 1491, 1493, 1492, 1494, 1493, 1495, 1494, 1496, 1495,
- 1497, 1496, 1498, 1497, 1499, 1498, 1500, 1499, 1501, 1500,
- 1502, 1501, 1503, 1502, 1504, 1503, 1505, 1504, 1506, 1505,
- 1507, 1506, 1508, 1507, 1509, 1508, 1510, 1509, 1511, 1510,
- 1512, 1511, 1513, 1512, 1514, 1513, 1515, 1514, 1516, 1515,
- 1517, 1516, 1518, 1517, 1519, 1518, 1520, 1519, 1521, 1520,
- 1522, 1521, 1523, 1522, 1524, 1523, 1525, 1524, 1526, 1525,
-
- 1527, 1526, 1528, 1527, 1529, 1528, 1530, 1529, 1531, 1530,
- 1532, 1531, 1533, 1532, 1534, 1533, 1535, 1534, 1536, 1535,
- 1537, 1536, 1538, 1537, 1539, 1538, 1540, 1539, 1541, 1540,
- 1542, 1541, 1543, 1542, 1544, 1543, 1545, 1544, 1546, 1545,
- 1547, 1546, 1548, 1547, 1549, 1548, 1550, 1549, 1551, 1550,
- 1552, 1551, 1553, 1552, 1554, 1553, 1555, 1554, 1556, 1555,
- 1557, 1556, 1558, 1557, 1559, 1558, 1560, 1559, 1561, 1560,
- 1562, 1561, 1563, 1562, 1564, 1563, 1565, 1564, 1566, 1565,
- 1567, 1566, 1568, 1567, 1569, 1568, 1570, 1569, 1571, 1570,
- 1572, 1571, 1573, 1572, 1574, 1573, 1575, 1574, 1576, 1575,
-
- 1577, 1576, 1578, 1577, 1579, 1578, 1580, 1579, 1581, 1580,
- 1582, 1581, 1583, 1582, 1584, 1583, 1585, 1584, 1586, 1585,
- 1587, 1586, 1588, 1587, 1589, 1588, 1590, 1589, 1591, 1590,
- 1592, 1591, 1593, 1592, 1594, 1593, 1595, 1594, 1596, 1595,
- 1597, 1596, 1598, 1597, 1599, 1598, 1600, 1599, 1601, 1600,
- 1602, 1601, 1603, 1602, 1604, 1603, 1605, 1604, 1606, 1605,
- 1607, 1606, 1608, 1607, 1609, 1608, 1610, 1609, 1611, 1610,
- 1612, 1611, 1613, 1612, 1614, 1613, 1615, 1614, 1616, 1615,
- 1617, 1616, 1618, 1617, 1619, 1618, 1620, 1619, 1621, 1620,
- 1622, 1621, 1623, 1622, 1624, 1623, 1625, 1624, 1626, 1625,
-
- 1627, 1626, 1628, 1627, 1629, 1628, 1630, 1629, 1631, 1630,
- 1632, 1631, 1633, 1632, 1634, 1633, 1635, 1634, 1636, 1635,
- 1637, 1636, 1638, 1637, 1639, 1638, 1640, 1639, 1641, 1640,
- 1642, 1641, 1643, 1642, 1644, 1643, 1645, 1644, 1646, 1645,
- 1647, 1646, 1648, 1647, 1649, 1648, 1650, 1649, 1651, 1650,
- 1652, 1651, 1653, 1652, 1654, 1653, 1655, 1654, 1656, 1655,
- 1657, 1656, 1658, 1657, 1659, 1658, 1660, 1659, 1661, 1660,
- 1662, 1661, 1663, 1662, 1664, 1663, 1665, 1664, 1666, 1665,
- 1667, 1666, 1668, 1667, 1669, 1668, 1670, 1669, 1671, 1670,
- 1672, 1671, 1673, 1672, 1674, 1673, 1675, 1674, 1676, 1675,
-
- 1677, 1676, 1678, 1677, 1679, 1678, 1680, 1679, 1681, 1680,
- 1682, 1681, 1683, 1682, 1684, 1683, 1685, 1684, 1686, 1685,
- 1687, 1686, 1688, 1687, 1689, 1688, 1690, 1689, 1691, 1690,
- 1692, 1691, 1693, 1692, 1694, 1693, 1695, 1694, 1696, 1695,
- 1697, 1696, 1698, 1697, 1699, 1698, 1700, 1699, 1701, 1700,
- 1702, 1701, 1703, 1702, 1704, 1703, 1705, 1704, 1706, 1705,
- 1707, 1706, 1708, 1707, 1709, 1708, 1710, 1709, 1711, 1710,
- 1712, 1711, 1713, 1712, 1714, 1713, 1715, 1714, 1716, 1715,
- 1717, 1716, 1718, 1717, 1719, 1718, 1720, 1719, 1721, 1720,
- 1722, 1721, 1723, 1722, 1724, 1723, 1725, 1724, 1726, 1725,
-
- 1727, 1726, 1728, 1727, 1729, 1728, 1730, 1729, 1731, 1730,
- 1732, 1731, 1733, 1732, 1734, 1733, 1735, 1734, 1736, 1735,
- 1737, 1736, 1738, 1737, 1739, 1738, 1740, 1739, 1741, 1740,
- 1742, 1741, 1743, 1742, 1744, 1743, 1745, 1744, 1746, 1745,
- 1747, 1746, 1748, 1747, 1749, 1748, 1750, 1749, 1751, 1750,
- 1752, 1751, 1753, 1752, 1754, 1753, 1755, 1754, 1756, 1755,
- 1757, 1756, 1758, 1757, 1759, 1758, 1760, 1759, 1761, 1760,
- 1762, 1761, 1763, 1762, 1764, 1763, 1765, 1764, 1766, 1765,
- 1767, 1766, 1768, 1767, 1769, 1768, 1770, 1769, 1771, 1770,
- 1772, 1771, 1773, 1772, 1774, 1773, 1775, 1774, 1776, 1775,
-
- 1777, 1776, 1778, 1777, 1779, 1778, 1780, 1779, 1781, 1780,
- 1782, 1781, 1783, 1782, 1784, 1783, 1785, 1784, 1786, 1785,
- 1787, 1786, 1788, 1787, 1789, 1788, 1790, 1789, 1791, 1790,
- 1792, 1791, 1793, 1792, 1794, 1793, 1795, 1794, 1796, 1795,
- 1797, 1796, 1798, 1797, 1799, 1798, 1800, 1799, 1801, 1800,
- 1802, 1801, 1803, 1802, 1804, 1803, 1805, 1804, 1806, 1805,
- 1807, 1806, 1808, 1807, 1809, 1808, 1810, 1809, 1811, 1810,
- 1812, 1811, 1813, 1812, 1814, 1813, 1815, 1814, 1816, 1815,
- 1817, 1816, 1818, 1817, 1819, 1818, 1820, 1819, 1821, 1820,
- 1822, 1821, 1823, 1822, 1824, 1823, 1825, 1824, 1826, 1825,
-
- 1827, 1826, 1828, 1827, 1829, 1828, 1409, 1829, 0, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
-
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
-
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
-
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
-
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409
+ 1411, 1411, 1410, 3, 1410, 5, 1412, 1412, 5, 5,
+ 5, 5, 1410, 13, 1410, 15, 1413, 1413, 1413, 1413,
+ 1414, 1414, 1410, 1415, 1416, 1410, 1410, 1410, 1417, 1410,
+ 1418, 1410, 1410, 1419, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1420,
+ 1410, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1410, 1410, 1410, 1421, 1410, 1410, 1421, 1410, 1410,
+ 1410, 1422, 1423, 1410, 1410, 1424, 1410, 1424, 1410, 1422,
+ 1410, 1410, 1421, 1422, 1425, 1410, 1426, 1410, 1427, 1428,
+
+ 1410, 1410, 1429, 1410, 1410, 1410, 1410, 1410, 1430, 1415,
+ 1415, 1410, 1410, 1410, 1410, 1410, 1417, 1410, 1417, 1431,
+ 1410, 1410, 1410, 1410, 1419, 1410, 1419, 35, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+
+ 1420, 1420, 1420, 1420, 1420, 1410, 1410, 1421, 1410, 1410,
+ 1421, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1423, 1410,
+ 1410, 1424, 1424, 1410, 1410, 1410, 1410, 1410, 1421, 1410,
+ 1410, 1425, 1410, 1426, 1427, 1428, 1410, 1410, 1429, 1410,
+ 1410, 1410, 1432, 1430, 1410, 1410, 1410, 1410, 1431, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1433, 1410, 1410, 1410,
+ 1410, 1410, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1410, 1410, 1410, 1434, 1432, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1433,
+ 1435, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1410, 1410, 1436, 1434, 1410, 1410, 1410, 1410, 1410, 1410,
+
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1435, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1437, 1436, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+
+ 1420, 1420, 1438, 1437, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1439, 1438,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1440, 1439, 1410,
+ 1410, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1441, 1440, 1410, 1420, 1420, 1420,
+ 1420, 1420, 1420, 1420, 1420, 1420, 1442, 1441, 1410, 1420,
+
+ 1420, 1420, 1420, 1443, 1442, 1410, 1420, 1420, 1420, 1420,
+ 1444, 1443, 1410, 1420, 1445, 1444, 1410, 1420, 1446, 1445,
+ 1410, 1420, 1447, 1446, 1410, 1448, 1447, 1410, 1410, 1449,
+ 1448, 1410, 1410, 1410, 1410, 1450, 1449, 1410, 1410, 1410,
+ 1451, 1450, 1410, 1410, 1410, 1452, 1451, 1410, 1410, 1410,
+ 1410, 1453, 1452, 1454, 1453, 1455, 1454, 1456, 1455, 1457,
+ 1456, 1458, 1457, 1459, 1458, 1460, 1459, 1461, 1460, 1462,
+ 1461, 1463, 1462, 1464, 1463, 1465, 1464, 1466, 1465, 1467,
+ 1466, 1468, 1467, 1469, 1468, 1470, 1469, 1471, 1470, 1472,
+ 1471, 1473, 1472, 1474, 1473, 1475, 1474, 1476, 1475, 1477,
+
+ 1476, 1478, 1477, 1479, 1478, 1480, 1479, 1481, 1480, 1482,
+ 1481, 1483, 1482, 1484, 1483, 1485, 1484, 1486, 1485, 1487,
+ 1486, 1488, 1487, 1489, 1488, 1490, 1489, 1491, 1490, 1492,
+ 1491, 1493, 1492, 1494, 1493, 1495, 1494, 1496, 1495, 1497,
+ 1496, 1498, 1497, 1499, 1498, 1500, 1499, 1501, 1500, 1502,
+ 1501, 1503, 1502, 1504, 1503, 1505, 1504, 1506, 1505, 1507,
+ 1506, 1508, 1507, 1509, 1508, 1510, 1509, 1511, 1510, 1512,
+ 1511, 1513, 1512, 1514, 1513, 1515, 1514, 1516, 1515, 1517,
+ 1516, 1518, 1517, 1519, 1518, 1520, 1519, 1521, 1520, 1522,
+ 1521, 1523, 1522, 1524, 1523, 1525, 1524, 1526, 1525, 1527,
+
+ 1526, 1528, 1527, 1529, 1528, 1530, 1529, 1531, 1530, 1532,
+ 1531, 1533, 1532, 1534, 1533, 1535, 1534, 1536, 1535, 1537,
+ 1536, 1538, 1537, 1539, 1538, 1540, 1539, 1541, 1540, 1542,
+ 1541, 1543, 1542, 1544, 1543, 1545, 1544, 1546, 1545, 1547,
+ 1546, 1548, 1547, 1549, 1548, 1550, 1549, 1551, 1550, 1552,
+ 1551, 1553, 1552, 1554, 1553, 1555, 1554, 1556, 1555, 1557,
+ 1556, 1558, 1557, 1559, 1558, 1560, 1559, 1561, 1560, 1562,
+ 1561, 1563, 1562, 1564, 1563, 1565, 1564, 1566, 1565, 1567,
+ 1566, 1568, 1567, 1569, 1568, 1570, 1569, 1571, 1570, 1572,
+ 1571, 1573, 1572, 1574, 1573, 1575, 1574, 1576, 1575, 1577,
+
+ 1576, 1578, 1577, 1579, 1578, 1580, 1579, 1581, 1580, 1582,
+ 1581, 1583, 1582, 1584, 1583, 1585, 1584, 1586, 1585, 1587,
+ 1586, 1588, 1587, 1589, 1588, 1590, 1589, 1591, 1590, 1592,
+ 1591, 1593, 1592, 1594, 1593, 1595, 1594, 1596, 1595, 1597,
+ 1596, 1598, 1597, 1599, 1598, 1600, 1599, 1601, 1600, 1602,
+ 1601, 1603, 1602, 1604, 1603, 1605, 1604, 1606, 1605, 1607,
+ 1606, 1608, 1607, 1609, 1608, 1610, 1609, 1611, 1610, 1612,
+ 1611, 1613, 1612, 1614, 1613, 1615, 1614, 1616, 1615, 1617,
+ 1616, 1618, 1617, 1619, 1618, 1620, 1619, 1621, 1620, 1622,
+ 1621, 1623, 1622, 1624, 1623, 1625, 1624, 1626, 1625, 1627,
+
+ 1626, 1628, 1627, 1629, 1628, 1630, 1629, 1631, 1630, 1632,
+ 1631, 1633, 1632, 1634, 1633, 1635, 1634, 1636, 1635, 1637,
+ 1636, 1638, 1637, 1639, 1638, 1640, 1639, 1641, 1640, 1642,
+ 1641, 1643, 1642, 1644, 1643, 1645, 1644, 1646, 1645, 1647,
+ 1646, 1648, 1647, 1649, 1648, 1650, 1649, 1651, 1650, 1652,
+ 1651, 1653, 1652, 1654, 1653, 1655, 1654, 1656, 1655, 1657,
+ 1656, 1658, 1657, 1659, 1658, 1660, 1659, 1661, 1660, 1662,
+ 1661, 1663, 1662, 1664, 1663, 1665, 1664, 1666, 1665, 1667,
+ 1666, 1668, 1667, 1669, 1668, 1670, 1669, 1671, 1670, 1672,
+ 1671, 1673, 1672, 1674, 1673, 1675, 1674, 1676, 1675, 1677,
+
+ 1676, 1678, 1677, 1679, 1678, 1680, 1679, 1681, 1680, 1682,
+ 1681, 1683, 1682, 1684, 1683, 1685, 1684, 1686, 1685, 1687,
+ 1686, 1688, 1687, 1689, 1688, 1690, 1689, 1691, 1690, 1692,
+ 1691, 1693, 1692, 1694, 1693, 1695, 1694, 1696, 1695, 1697,
+ 1696, 1698, 1697, 1699, 1698, 1700, 1699, 1701, 1700, 1702,
+ 1701, 1703, 1702, 1704, 1703, 1705, 1704, 1706, 1705, 1707,
+ 1706, 1708, 1707, 1709, 1708, 1710, 1709, 1711, 1710, 1712,
+ 1711, 1713, 1712, 1714, 1713, 1715, 1714, 1716, 1715, 1717,
+ 1716, 1718, 1717, 1719, 1718, 1720, 1719, 1721, 1720, 1722,
+ 1721, 1723, 1722, 1724, 1723, 1725, 1724, 1726, 1725, 1727,
+
+ 1726, 1728, 1727, 1729, 1728, 1730, 1729, 1731, 1730, 1732,
+ 1731, 1733, 1732, 1734, 1733, 1735, 1734, 1736, 1735, 1737,
+ 1736, 1738, 1737, 1739, 1738, 1740, 1739, 1741, 1740, 1742,
+ 1741, 1743, 1742, 1744, 1743, 1745, 1744, 1746, 1745, 1747,
+ 1746, 1748, 1747, 1749, 1748, 1750, 1749, 1751, 1750, 1752,
+ 1751, 1753, 1752, 1754, 1753, 1755, 1754, 1756, 1755, 1757,
+ 1756, 1758, 1757, 1759, 1758, 1760, 1759, 1761, 1760, 1762,
+ 1761, 1763, 1762, 1764, 1763, 1765, 1764, 1766, 1765, 1767,
+ 1766, 1768, 1767, 1769, 1768, 1770, 1769, 1771, 1770, 1772,
+ 1771, 1773, 1772, 1774, 1773, 1775, 1774, 1776, 1775, 1777,
+
+ 1776, 1778, 1777, 1779, 1778, 1780, 1779, 1781, 1780, 1782,
+ 1781, 1783, 1782, 1784, 1783, 1785, 1784, 1786, 1785, 1787,
+ 1786, 1788, 1787, 1789, 1788, 1790, 1789, 1791, 1790, 1792,
+ 1791, 1793, 1792, 1794, 1793, 1795, 1794, 1796, 1795, 1797,
+ 1796, 1798, 1797, 1799, 1798, 1800, 1799, 1801, 1800, 1802,
+ 1801, 1803, 1802, 1804, 1803, 1805, 1804, 1806, 1805, 1807,
+ 1806, 1808, 1807, 1809, 1808, 1810, 1809, 1811, 1810, 1812,
+ 1811, 1813, 1812, 1814, 1813, 1815, 1814, 1816, 1815, 1817,
+ 1816, 1818, 1817, 1819, 1818, 1820, 1819, 1821, 1820, 1822,
+ 1821, 1823, 1822, 1824, 1823, 1825, 1824, 1826, 1825, 1827,
+
+ 1826, 1828, 1827, 1829, 1828, 1830, 1829, 1410, 1830, 0,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410
} ;
-static yyconst short int yy_nxt[8061] =
+static yyconst short int yy_nxt[7662] =
{ 0,
26, 27, 27, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 36, 39, 40, 41, 42,
@@ -990,9 +990,9 @@ static yyconst short int yy_nxt[8061] =
115, 115, 115, 93, 104, 105, 118, 121, 122, 199,
106, 104, 105, 88, 88, 126, 123, 106, 113, 200,
90, 90, 94, 91, 91, 92, 92, 139, 107, 108,
- 119, 93, 124, 936, 127, 107, 108, 141, 140, 144,
+ 119, 93, 124, 937, 127, 107, 108, 141, 140, 144,
144, 144, 114, 158, 159, 145, 142, 143, 160, 161,
- 94, 938, 95, 92, 95, 95, 95, 95, 95, 95,
+ 94, 939, 95, 92, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
@@ -1009,859 +1009,816 @@ static yyconst short int yy_nxt[8061] =
98, 98, 98, 99, 98, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
- 99, 98, 98, 98, 128, 146, 940, 166, 154, 149,
+ 99, 98, 98, 98, 128, 146, 941, 166, 154, 149,
147, 150, 150, 150, 155, 156, 157, 148, 149, 167,
150, 150, 150, 168, 169, 194, 206, 224, 195, 151,
- 174, 171, 197, 942, 175, 198, 129, 130, 151, 131,
+ 174, 171, 197, 943, 175, 198, 129, 130, 151, 131,
176, 132, 172, 126, 133, 173, 225, 201, 152, 177,
- 134, 183, 202, 135, 136, 283, 137, 184, 178, 179,
- 180, 207, 127, 185, 187, 212, 212, 212, 181, 284,
+ 134, 183, 202, 135, 136, 284, 137, 184, 178, 179,
+ 180, 207, 127, 185, 187, 212, 212, 212, 181, 285,
- 182, 188, 189, 115, 115, 115, 944, 190, 209, 209,
+ 182, 188, 189, 115, 115, 115, 945, 190, 209, 209,
209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
209, 209, 209, 209, 209, 209, 209, 209, 209, 120,
209, 120, 120, 120, 120, 120, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120, 120, 210, 209, 209,
- 212, 212, 212, 215, 228, 228, 216, 216, 946, 228,
- 229, 216, 216, 230, 231, 244, 118, 216, 216, 227,
- 1409, 1409, 249, 250, 266, 267, 117, 144, 144, 144,
-
- 286, 228, 228, 287, 233, 948, 1409, 213, 245, 1409,
- 119, 270, 271, 217, 294, 151, 218, 307, 217, 281,
- 282, 218, 950, 308, 217, 295, 952, 218, 261, 261,
- 261, 954, 149, 1409, 150, 150, 150, 262, 310, 262,
- 301, 311, 263, 263, 263, 956, 151, 264, 264, 264,
- 272, 958, 151, 273, 960, 274, 302, 303, 962, 275,
- 276, 264, 264, 264, 264, 264, 264, 212, 212, 212,
- 321, 321, 321, 322, 322, 228, 323, 323, 323, 964,
- 228, 966, 230, 231, 321, 321, 321, 321, 321, 321,
- 323, 323, 323, 323, 323, 323, 228, 230, 231, 1409,
-
- 968, 229, 228, 233, 337, 337, 337, 261, 261, 261,
- 263, 263, 263, 970, 342, 1409, 354, 355, 1409, 263,
- 263, 263, 361, 228, 362, 151, 343, 363, 379, 264,
- 264, 264, 390, 390, 408, 409, 380, 364, 321, 321,
- 321, 365, 1409, 264, 264, 264, 264, 264, 264, 391,
- 391, 391, 321, 321, 321, 321, 321, 321, 1409, 400,
- 337, 337, 337, 391, 391, 391, 391, 391, 391, 1409,
- 401, 457, 457, 458, 1409, 461, 400, 1409, 467, 408,
- 409, 1409, 505, 461, 972, 1409, 462, 401, 1409, 468,
- 1409, 467, 511, 506, 462, 402, 505, 1409, 974, 543,
-
- 1409, 1409, 468, 512, 1409, 545, 1409, 506, 511, 1409,
- 544, 463, 1409, 540, 540, 540, 546, 461, 400, 512,
- 1409, 543, 976, 1409, 1409, 540, 540, 540, 462, 401,
- 545, 978, 544, 1409, 570, 570, 570, 1409, 570, 570,
- 570, 546, 1409, 980, 982, 984, 1409, 1409, 1409, 986,
- 1409, 988, 990, 1409, 1409, 1409, 1409, 992, 1409, 162,
- 1409, 1409, 1409, 162, 1409, 1409, 1409, 1409, 569, 1409,
- 1409, 1409, 994, 1409, 1409, 996, 1409, 998, 1000, 1409,
- 1409, 627, 627, 627, 1002, 1409, 1004, 1006, 1409, 1409,
- 1008, 1409, 1010, 1409, 627, 627, 627, 1409, 1409, 1012,
-
- 1409, 1014, 1016, 1409, 1409, 628, 1018, 1409, 631, 631,
- 631, 1409, 632, 649, 649, 649, 1409, 633, 628, 1409,
- 631, 631, 631, 1409, 632, 1409, 1020, 1409, 1022, 633,
- 1409, 1409, 649, 649, 649, 1024, 1026, 1409, 650, 1409,
- 1028, 1409, 1409, 1409, 1409, 1409, 1409, 1030, 1032, 1034,
- 1036, 1038, 1040, 1409, 1409, 634, 1409, 650, 1409, 1409,
- 1409, 1409, 1409, 1042, 1409, 1409, 1409, 634, 1409, 1044,
- 1046, 1409, 1048, 1050, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1052, 1054, 1056, 1058, 1060, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1062, 1064, 1066, 1409, 1068, 1409,
-
- 1409, 1409, 1409, 1409, 1409, 1070, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1072, 1074, 1409, 1076,
- 1409, 1409, 1409, 1409, 1409, 1409, 1078, 1409, 1080, 1409,
- 1082, 1084, 1409, 1086, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1088, 1409, 1409, 1409, 1090, 1409, 1409, 1092, 1409,
- 1409, 1094, 1409, 1096, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1098, 1409, 1409, 1100, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1102, 1409, 1104, 1409, 1409, 1106,
- 1409, 1409, 1409, 1409, 1409, 1108, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1110, 1409, 1112, 1114, 1409, 1116,
-
- 1409, 1118, 1409, 1409, 1409, 1409, 1409, 1409, 1120, 1409,
- 1409, 1122, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1124, 1409, 1409, 1126, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1128, 1409, 1130, 1132, 1134, 1136, 1409, 1138, 1409, 1409,
- 1409, 1409, 1409, 1409, 1140, 1409, 1409, 1142, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1144, 1146, 1148, 1150,
- 1152, 1154, 1156, 1158, 1409, 1409, 1409, 1409, 1409, 1409,
-
- 1160, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1162, 1164, 1166, 1409, 1168, 1170, 1409, 1172,
- 1409, 1409, 1409, 1174, 1409, 1409, 1176, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1178,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1180, 1182,
- 1184, 1409, 1186, 1188, 1409, 1190, 1409, 1409, 1409, 1192,
- 1409, 1409, 1194, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
-
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1196, 1409,
- 1409, 1198, 1409, 1409, 1200, 1202, 1409, 1409, 1204, 1409,
- 1409, 1206, 1409, 1409, 1409, 1208, 1409, 1409, 1210, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1212, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1214, 1409, 1409, 1216, 1409, 1409, 1218, 1409, 1409,
- 1220, 1222, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1224, 1409, 1409, 1226, 1409, 1409, 1409, 1409, 1409,
- 1228, 1409, 1409, 1230, 1409, 1409, 1232, 1409, 1234, 1409,
-
- 1409, 1409, 1409, 1409, 1409, 1409, 1236, 1238, 1409, 1409,
- 1240, 1409, 1409, 1242, 1409, 1409, 1244, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1246, 1409, 1409,
- 1248, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1250,
- 1409, 1409, 1252, 1409, 1409, 1409, 1409, 1409, 1409, 1254,
- 1409, 1409, 1256, 1258, 1409, 1409, 1260, 1409, 1409, 1262,
- 1409, 1409, 1264, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1266, 1409, 1409, 1268, 1409,
- 1409, 1409, 1270, 1409, 1409, 1272, 1409, 1274, 1276, 1278,
-
- 1409, 1409, 1280, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1282, 1409, 1409, 1284, 1409, 1409, 1286, 1288, 1409,
- 1290, 1292, 1409, 1294, 1296, 1298, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1300, 1409, 1409,
- 1409, 1409, 1409, 1409, 1302, 1409, 1304, 1306, 1308, 1310,
- 1312, 1314, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
-
- 1409, 1409, 1409, 1409, 1316, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1318, 1409, 1409, 1409, 1409, 1409, 1409,
- 1320, 1409, 1322, 1324, 1326, 1328, 1330, 1332, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1334, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1336, 1409, 1409, 1338,
- 1409, 1409, 1409, 1409, 1409, 1409, 1340, 1409, 1342, 1409,
- 1344, 1346, 1409, 1348, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1350, 1409, 1409, 1352, 1409,
-
- 1409, 1354, 1409, 1356, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1358, 1409, 1409, 1360, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1362, 1409, 1364, 1409, 1409, 1366,
- 1409, 1409, 1409, 1409, 1409, 1368, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1370, 1409, 1372, 1374, 1409, 1376,
- 1409, 1378, 1409, 1409, 1409, 1409, 1409, 1409, 1380, 1409,
- 1409, 1382, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1384, 1409, 1409, 1386, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1388, 1409, 1390, 1392, 1394, 1396, 1409, 1398, 1409, 1409,
-
- 1409, 1409, 1409, 1409, 1400, 1409, 1409, 1402, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1404, 1406, 1408, 120,
- 934, 932, 930, 928, 1409, 1409, 1409, 1409, 1409, 1409,
- 926, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 924, 922, 920, 1409, 918, 916, 1409, 914,
- 1409, 1409, 1409, 912, 1409, 1409, 910, 1409, 1409, 1409,
-
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 908,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 906, 904,
- 902, 1409, 900, 898, 1409, 896, 1409, 1409, 1409, 894,
- 1409, 1409, 892, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 890, 1409,
- 1409, 888, 1409, 1409, 886, 884, 1409, 1409, 882, 1409,
- 1409, 880, 1409, 1409, 1409, 878, 1409, 1409, 876, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
-
- 874, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 872, 1409, 1409, 870, 1409, 1409, 868, 1409, 1409,
- 866, 864, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 862, 1409, 1409, 860, 1409, 1409, 1409, 1409, 1409,
- 858, 1409, 1409, 856, 1409, 1409, 854, 1409, 852, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 850, 848, 1409, 1409,
- 846, 1409, 1409, 844, 1409, 1409, 842, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 840, 1409, 1409,
- 838, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 836,
- 1409, 1409, 834, 1409, 1409, 1409, 1409, 1409, 1409, 832,
-
- 1409, 1409, 830, 828, 1409, 1409, 826, 1409, 1409, 824,
- 1409, 1409, 822, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 820, 1409, 1409, 818, 1409,
- 1409, 1409, 816, 1409, 1409, 814, 1409, 812, 810, 808,
- 1409, 1409, 806, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 804, 1409, 1409, 802, 1409, 1409, 800, 798, 1409,
- 796, 794, 1409, 792, 790, 788, 1409, 1409, 1409, 1409,
-
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 786, 1409, 1409,
- 1409, 1409, 1409, 1409, 784, 1409, 782, 780, 778, 776,
- 774, 772, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 770, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 768, 1409, 1409, 1409, 1409, 1409, 1409,
- 766, 1409, 764, 762, 760, 758, 756, 754, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
-
- 1409, 1409, 1409, 1409, 1409, 752, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 750, 1409, 1409, 748,
- 1409, 1409, 1409, 1409, 1409, 1409, 746, 1409, 744, 1409,
- 742, 740, 1409, 738, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 736, 1409, 1409, 734, 1409,
- 1409, 732, 1409, 730, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 728, 1409, 1409, 726, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 724, 1409, 722, 1409, 1409, 720,
- 1409, 1409, 1409, 1409, 1409, 718, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 716, 1409, 714, 712, 1409, 710,
-
- 1409, 708, 1409, 1409, 1409, 1409, 1409, 1409, 706, 1409,
- 1409, 704, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 702, 1409, 1409, 700, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 698, 1409, 696, 694, 692, 690, 1409, 688, 1409, 1409,
- 1409, 1409, 1409, 1409, 686, 1409, 1409, 684, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 682, 680, 678, 676,
- 674, 672, 670, 668, 1409, 1409, 1409, 1409, 1409, 1409,
-
- 666, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 664, 662, 660, 1409, 658, 656, 1409, 654,
- 1409, 1409, 1409, 644, 1409, 1409, 644, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 652,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 648, 647,
- 646, 1409, 644, 643, 1409, 642, 1409, 1409, 1409, 641,
- 1409, 1409, 639, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
-
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 638, 1409,
- 1409, 637, 1409, 1409, 636, 630, 1409, 1409, 626, 1409,
- 1409, 624, 1409, 1409, 1409, 623, 1409, 1409, 621, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 620, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 619, 1409, 1409, 617, 1409, 1409, 616, 1409, 1409,
- 615, 613, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 612, 1409, 1409, 611, 1409, 1409, 1409, 1409, 1409,
- 609, 1409, 1409, 608, 1409, 1409, 607, 1409, 606, 1409,
-
- 1409, 1409, 1409, 1409, 1409, 1409, 605, 604, 1409, 1409,
- 602, 1409, 1409, 601, 1409, 1409, 600, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 599, 1409, 1409,
- 598, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 597,
- 1409, 1409, 595, 1409, 1409, 1409, 1409, 1409, 1409, 594,
- 1409, 1409, 593, 592, 1409, 1409, 591, 1409, 1409, 590,
- 1409, 1409, 589, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 588, 1409, 1409, 587, 1409,
- 1409, 1409, 586, 1409, 1409, 585, 1409, 583, 582, 581,
-
- 1409, 1409, 580, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 579, 1409, 1409, 578, 1409, 1409, 577, 576, 1409,
- 575, 574, 1409, 573, 572, 571, 1409, 1409, 1409, 1409,
- 568, 566, 1409, 1409, 1409, 565, 564, 563, 1409, 1409,
- 1409, 1409, 562, 561, 560, 1409, 559, 558, 1409, 557,
- 556, 555, 554, 553, 552, 551, 550, 549, 548, 547,
- 542, 541, 539, 537, 536, 1409, 535, 534, 533, 532,
- 531, 530, 1409, 24, 24, 24, 24, 24, 24, 24,
-
- 24, 24, 24, 24, 24, 86, 86, 86, 86, 86,
- 86, 86, 86, 86, 86, 86, 86, 100, 100, 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 103,
- 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
- 103, 109, 109, 109, 109, 109, 109, 109, 109, 109,
+ 212, 212, 212, 215, 228, 228, 216, 216, 947, 228,
+ 229, 216, 216, 230, 231, 240, 240, 216, 216, 227,
+ 118, 240, 1410, 1410, 245, 250, 251, 308, 117, 267,
+
+ 268, 228, 228, 309, 233, 271, 272, 213, 1410, 240,
+ 240, 1410, 287, 217, 119, 288, 218, 246, 217, 282,
+ 283, 218, 311, 302, 217, 312, 949, 218, 144, 144,
+ 144, 262, 262, 262, 149, 1410, 150, 150, 150, 303,
+ 304, 265, 265, 265, 951, 263, 151, 263, 953, 151,
+ 264, 264, 264, 343, 151, 265, 265, 265, 265, 265,
+ 265, 273, 295, 955, 274, 344, 275, 212, 212, 212,
+ 276, 277, 401, 296, 322, 322, 322, 323, 323, 228,
+ 324, 324, 324, 402, 228, 957, 230, 231, 322, 322,
+ 322, 322, 322, 322, 324, 324, 324, 324, 324, 324,
+
+ 228, 230, 231, 1410, 468, 229, 228, 233, 240, 240,
+ 338, 338, 338, 959, 240, 469, 262, 262, 262, 1410,
+ 355, 356, 1410, 264, 264, 264, 961, 228, 264, 264,
+ 264, 380, 240, 240, 151, 265, 265, 265, 963, 381,
+ 362, 965, 363, 391, 391, 364, 1410, 409, 410, 265,
+ 265, 265, 265, 265, 265, 365, 322, 322, 322, 366,
+ 409, 410, 392, 392, 392, 967, 1410, 338, 338, 338,
+ 322, 322, 322, 322, 322, 322, 392, 392, 392, 392,
+ 392, 392, 1410, 401, 1410, 1410, 458, 458, 459, 1410,
+ 462, 506, 969, 462, 402, 468, 512, 1410, 971, 973,
+
+ 1410, 463, 507, 1410, 463, 1410, 469, 513, 1410, 1410,
+ 541, 541, 541, 1410, 506, 975, 1410, 544, 546, 403,
+ 512, 977, 1410, 979, 981, 507, 464, 1410, 545, 547,
+ 1410, 513, 1410, 541, 541, 541, 462, 401, 1410, 544,
+ 1410, 1410, 546, 571, 571, 571, 1410, 463, 402, 1410,
+ 545, 1410, 983, 547, 571, 571, 571, 985, 1410, 1410,
+ 628, 628, 628, 987, 1410, 1410, 1410, 1410, 162, 989,
+ 1410, 1410, 1410, 1410, 1410, 1410, 570, 1410, 1410, 162,
+ 1410, 1410, 1410, 1410, 629, 1410, 991, 1410, 1410, 993,
+ 1410, 1410, 1410, 995, 1410, 997, 999, 1410, 1001, 1003,
+
+ 1410, 1410, 1410, 628, 628, 628, 1005, 1410, 1410, 1410,
+ 1007, 1410, 1009, 1011, 1410, 1410, 632, 632, 632, 1013,
+ 633, 1015, 1410, 1410, 1410, 634, 1017, 629, 632, 632,
+ 632, 1410, 633, 1019, 1021, 1410, 1023, 634, 1410, 1410,
+ 1410, 1410, 1410, 650, 650, 650, 1025, 1410, 1410, 1027,
+ 1410, 650, 650, 650, 1410, 1029, 1410, 1031, 1033, 1410,
+ 1035, 1410, 1410, 635, 1410, 1410, 1410, 1410, 651, 1410,
+ 1410, 1410, 1037, 1410, 1410, 635, 651, 1410, 1410, 1410,
+ 1410, 1410, 1039, 1410, 1410, 1410, 1041, 1410, 1410, 1043,
+ 1410, 1410, 1410, 1045, 1410, 1410, 1047, 1410, 1410, 1410,
+
+ 1410, 1410, 1049, 1410, 1410, 1410, 1051, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1053, 1410, 1410, 1055,
+ 1410, 1057, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1059, 1061, 1063, 1065, 1410, 1067, 1410, 1410, 1410,
+ 1410, 1069, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1071, 1410, 1073, 1410, 1410, 1075, 1410, 1410, 1410,
+ 1410, 1410, 1077, 1410, 1079, 1081, 1410, 1410, 1410, 1410,
+ 1410, 1083, 1410, 1410, 1085, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1087, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1089, 1091, 1093, 1095, 1097, 1099, 1410, 1410,
+
+ 1410, 1101, 1410, 1410, 1410, 1410, 1410, 1410, 1103, 1105,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1107, 1410, 1410, 1109, 1111, 1410, 1113,
+ 1115, 1117, 1119, 1121, 1410, 1410, 1410, 1410, 1123, 1410,
+ 1125, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1127, 1410, 1410, 1129, 1410, 1410, 1410, 1131,
+ 1133, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1135, 1410, 1137, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1139, 1141, 1410, 1410, 1143, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1145, 1410, 1410, 1410, 1410, 1410, 1410, 1147,
+
+ 1410, 1410, 1149, 1151, 1410, 1410, 1410, 1153, 1155, 1410,
+ 1410, 1410, 1410, 1410, 1157, 1410, 1410, 1159, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1161, 1163,
+ 1165, 1167, 1169, 1410, 1410, 1410, 1410, 1171, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1173,
+ 1410, 1175, 1410, 1410, 1177, 1410, 1410, 1410, 1179, 1181,
+ 1183, 1185, 1410, 1187, 1410, 1410, 1410, 1189, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1191, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1193, 1195,
+ 1410, 1197, 1199, 1201, 1410, 1203, 1410, 1410, 1205, 1410,
+
+ 1410, 1410, 1410, 1410, 1207, 1410, 1209, 1410, 1410, 1410,
+ 1211, 1410, 1410, 1213, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1215, 1410, 1217, 1410, 1410, 1219, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1221, 1410, 1223, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1225, 1410,
+ 1410, 1227, 1410, 1229, 1410, 1231, 1410, 1410, 1233, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1235, 1237, 1410, 1239, 1410,
+ 1410, 1410, 1410, 1241, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1243, 1410,
+ 1410, 1245, 1410, 1410, 1247, 1249, 1410, 1251, 1253, 1410,
+
+ 1410, 1410, 1410, 1255, 1410, 1410, 1410, 1410, 1410, 1257,
+ 1410, 1410, 1259, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1261, 1263, 1410, 1265, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1267, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1269, 1410, 1410, 1271, 1410, 1410,
+ 1273, 1410, 1410, 1410, 1275, 1277, 1410, 1279, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1281, 1410, 1410, 1283, 1410, 1410,
+ 1410, 1410, 1285, 1410, 1410, 1410, 1287, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1289, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1291, 1410, 1293, 1295, 1297, 1410,
+
+ 1410, 1299, 1301, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1303, 1410, 1410, 1305,
+ 1410, 1410, 1410, 1307, 1309, 1410, 1311, 1410, 1410, 1410,
+ 1410, 1410, 1313, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1315, 1410, 1317, 1410, 1410, 1319,
+ 1410, 1410, 1410, 1321, 1323, 1325, 1327, 1410, 1329, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1331,
+ 1410, 1333, 1410, 1410, 1410, 1335, 1410, 1410, 1337, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1339, 1410,
+ 1341, 1410, 1410, 1343, 1410, 1345, 1410, 1410, 1410, 1410,
+
+ 1410, 1347, 1410, 1410, 1410, 1349, 1410, 1410, 1351, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1353, 1410,
+ 1355, 1410, 1410, 1357, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1359, 1361, 1410, 1363, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1365, 1410, 1410, 1367, 1410,
+ 1410, 1369, 1410, 1371, 1373, 1410, 1410, 1410, 1410, 1410,
+ 1375, 1410, 1410, 1377, 1410, 1410, 1410, 1410, 1379, 1410,
+ 1410, 1410, 1410, 1410, 1381, 1410, 1410, 1383, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1385,
+ 1387, 1410, 1389, 1410, 1391, 1410, 1410, 1410, 1410, 1410,
+
+ 1410, 1410, 1410, 1410, 1393, 1410, 1410, 1395, 1410, 1397,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1399,
+ 1401, 1410, 1403, 1410, 1410, 1410, 1410, 1410, 1410, 1405,
+ 1410, 1410, 1407, 1410, 1410, 1410, 1410, 1410, 1410, 1409,
+ 1410, 120, 1410, 1410, 935, 1410, 1410, 1410, 1410, 1410,
+ 933, 1410, 931, 929, 1410, 1410, 1410, 1410, 1410, 927,
+ 1410, 1410, 925, 1410, 1410, 1410, 1410, 923, 1410, 1410,
+ 1410, 921, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 919, 917, 1410, 915, 913, 1410, 1410, 911, 909,
+ 1410, 907, 1410, 1410, 1410, 1410, 905, 903, 1410, 1410,
+
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 901, 1410, 1410, 899, 1410, 1410, 897, 895, 893,
+ 1410, 891, 1410, 1410, 1410, 1410, 1410, 1410, 889, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 887,
+ 885, 1410, 1410, 883, 1410, 1410, 1410, 1410, 1410, 1410,
+ 881, 1410, 1410, 879, 1410, 1410, 1410, 1410, 1410, 1410,
+ 877, 1410, 1410, 1410, 1410, 1410, 875, 1410, 1410, 1410,
+ 873, 1410, 1410, 871, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 869, 1410, 867, 1410, 865, 863, 1410,
+ 861, 1410, 1410, 1410, 1410, 859, 857, 1410, 1410, 1410,
+
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 855, 1410, 1410, 853, 1410, 1410, 851, 1410, 849, 847,
+ 1410, 1410, 1410, 1410, 1410, 845, 1410, 1410, 843, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 841,
+ 1410, 1410, 839, 1410, 1410, 1410, 837, 1410, 1410, 835,
+ 1410, 1410, 1410, 1410, 1410, 833, 1410, 1410, 1410, 831,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 829,
+ 1410, 1410, 827, 1410, 825, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 823, 821, 819, 817, 1410, 815,
+ 1410, 1410, 1410, 1410, 813, 1410, 1410, 1410, 1410, 1410,
+
+ 1410, 1410, 1410, 1410, 811, 1410, 809, 1410, 1410, 807,
+ 1410, 1410, 1410, 1410, 1410, 805, 1410, 803, 801, 1410,
+ 1410, 1410, 1410, 1410, 799, 1410, 1410, 797, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 795, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 793, 791, 789, 787, 785,
+ 783, 1410, 1410, 1410, 781, 1410, 1410, 1410, 1410, 1410,
+ 1410, 779, 777, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 775, 1410, 1410, 773,
+ 771, 1410, 769, 767, 765, 763, 761, 1410, 1410, 1410,
+ 1410, 759, 1410, 757, 1410, 1410, 1410, 1410, 1410, 1410,
+
+ 1410, 1410, 1410, 1410, 1410, 755, 1410, 1410, 753, 1410,
+ 1410, 1410, 751, 749, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 747, 1410, 745, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 743, 741, 1410, 1410, 739, 1410,
+ 1410, 1410, 1410, 1410, 1410, 737, 1410, 1410, 1410, 1410,
+ 1410, 1410, 735, 1410, 1410, 733, 731, 1410, 1410, 1410,
+ 729, 727, 1410, 1410, 1410, 1410, 1410, 725, 1410, 1410,
+ 723, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 721, 719, 717, 715, 713, 1410, 1410, 1410, 1410,
+ 711, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+
+ 1410, 1410, 709, 1410, 707, 1410, 1410, 705, 1410, 1410,
+ 1410, 703, 701, 699, 697, 1410, 695, 1410, 1410, 1410,
+ 693, 1410, 1410, 1410, 1410, 1410, 1410, 691, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 689, 687, 1410, 685, 683, 681, 1410, 679, 1410,
+ 1410, 677, 1410, 1410, 1410, 1410, 1410, 675, 1410, 673,
+ 1410, 1410, 1410, 671, 1410, 1410, 669, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 667, 1410, 665, 1410,
+ 1410, 663, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 661,
+ 1410, 659, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+
+ 1410, 657, 1410, 1410, 655, 1410, 645, 1410, 645, 1410,
+ 1410, 653, 1410, 1410, 1410, 1410, 1410, 1410, 649, 648,
+ 1410, 647, 1410, 1410, 1410, 1410, 645, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 644, 1410, 1410, 643, 1410, 1410, 642, 640, 1410,
+ 639, 638, 1410, 1410, 1410, 1410, 637, 1410, 1410, 1410,
+ 1410, 1410, 631, 1410, 1410, 627, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 625, 624, 1410,
+ 622, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 621, 1410, 1410, 1410, 1410, 1410, 1410, 620, 1410, 1410,
+
+ 618, 1410, 1410, 617, 1410, 1410, 1410, 616, 614, 1410,
+ 613, 1410, 1410, 1410, 1410, 1410, 1410, 612, 1410, 1410,
+ 610, 1410, 1410, 1410, 1410, 609, 1410, 1410, 1410, 608,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 607, 1410, 1410, 1410, 1410, 1410, 1410, 606, 1410, 605,
+ 603, 602, 1410, 1410, 601, 600, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 599,
+ 1410, 1410, 598, 1410, 1410, 1410, 596, 595, 1410, 594,
+ 1410, 1410, 1410, 1410, 1410, 593, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 592, 1410, 591,
+
+ 1410, 1410, 590, 1410, 1410, 1410, 589, 588, 587, 586,
+ 1410, 584, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 583, 1410, 582, 1410, 1410, 1410, 581, 1410,
+ 1410, 580, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 579, 1410, 578, 1410, 1410, 577, 1410, 576, 1410,
+ 1410, 1410, 1410, 1410, 575, 1410, 1410, 1410, 574, 1410,
+ 1410, 573, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 572, 1410, 569, 1410, 1410, 567, 1410, 1410, 1410,
+ 1410, 1410, 1410, 566, 565, 1410, 564, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 563, 1410,
+
+ 1410, 562, 1410, 1410, 561, 1410, 560, 559, 1410, 1410,
+ 1410, 1410, 1410, 558, 1410, 1410, 557, 1410, 1410, 1410,
+ 1410, 556, 1410, 1410, 1410, 1410, 1410, 555, 1410, 1410,
+ 554, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 553, 552, 1410, 551, 1410, 550, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 549, 1410, 1410,
+ 548, 1410, 543, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 542, 540, 1410, 538, 1410, 1410, 1410, 1410,
+ 1410, 1410, 537, 1410, 1410, 536, 1410, 1410, 1410, 1410,
+ 1410, 1410, 535, 1410, 534, 1410, 1410, 533, 1410, 1410,
+
+ 1410, 1410, 1410, 532, 1410, 531, 530, 1410, 1410, 1410,
+ 1410, 1410, 529, 1410, 1410, 528, 1410, 1410, 1410, 1410,
+ 527, 1410, 1410, 1410, 526, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 525, 524, 1410, 523, 522, 1410,
+ 1410, 521, 520, 1410, 519, 1410, 1410, 1410, 1410, 518,
+ 517, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 516, 1410, 1410, 515, 1410, 1410,
+ 514, 511, 510, 1410, 509, 1410, 1410, 1410, 1410, 1410,
+ 1410, 405, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 508, 505, 1410, 1410, 458, 1410, 1410, 1410,
+
+ 1410, 1410, 1410, 504, 1410, 1410, 502, 1410, 1410, 1410,
+ 1410, 1410, 1410, 501, 1410, 1410, 1410, 1410, 1410, 500,
+ 1410, 1410, 1410, 499, 1410, 1410, 498, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 497, 1410, 496, 1410,
+ 495, 494, 1410, 493, 1410, 1410, 1410, 1410, 492, 491,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 490, 1410, 1410, 489, 1410, 1410, 488,
+ 1410, 487, 486, 1410, 1410, 1410, 1410, 1410, 485, 1410,
+ 1410, 484, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 483, 1410, 1410, 482, 1410, 1410, 1410, 481,
+
+ 1410, 1410, 480, 1410, 1410, 1410, 1410, 1410, 479, 1410,
+ 1410, 1410, 478, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 477, 1410, 1410, 476, 1410, 475, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 474, 473, 409,
+ 472, 1410, 471, 1410, 1410, 470, 1410, 467, 1410, 1410,
+ 1410, 1410, 1410, 466, 1410, 1410, 1410, 405, 1410, 465,
+ 1410, 461, 460, 1410, 457, 455, 454, 453, 452, 451,
+ 450, 449, 448, 1410, 447, 446, 445, 444, 1410, 1410,
+ 443, 442, 441, 440, 439, 438, 437, 1410, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 86,
+
+ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
+ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 103, 103, 103, 103, 103, 103, 103, 103, 103,
+ 103, 103, 109, 109, 109, 109, 109, 109, 109, 109,
109, 109, 109, 111, 111, 111, 111, 111, 111, 111,
- 111, 111, 111, 529, 111, 117, 117, 117, 117, 528,
- 117, 117, 117, 117, 117, 117, 117, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 164,
- 527, 526, 164, 208, 208, 208, 525, 208, 208, 208,
-
- 524, 208, 208, 214, 214, 214, 214, 214, 214, 214,
- 214, 214, 214, 214, 214, 219, 523, 522, 219, 222,
- 222, 222, 222, 222, 222, 521, 222, 222, 222, 222,
- 222, 232, 520, 519, 518, 517, 516, 232, 232, 515,
- 232, 234, 514, 513, 234, 235, 510, 509, 235, 236,
- 236, 236, 236, 236, 236, 236, 508, 236, 236, 236,
- 236, 239, 239, 404, 239, 239, 507, 239, 239, 239,
- 239, 239, 239, 242, 242, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 248, 504, 457, 248, 324,
- 324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
-
- 324, 340, 503, 501, 500, 499, 498, 497, 496, 495,
- 494, 340, 392, 392, 392, 392, 392, 392, 392, 392,
- 392, 392, 392, 392, 410, 493, 492, 491, 490, 489,
- 410, 488, 487, 410, 455, 455, 455, 455, 455, 455,
- 455, 455, 455, 455, 455, 455, 502, 502, 502, 502,
- 502, 502, 502, 502, 502, 502, 502, 502, 538, 538,
- 538, 538, 538, 538, 538, 538, 538, 538, 538, 538,
- 567, 567, 567, 567, 567, 567, 567, 567, 567, 567,
- 567, 567, 584, 584, 584, 584, 584, 584, 584, 584,
- 584, 584, 584, 584, 596, 596, 596, 596, 596, 596,
-
- 596, 596, 596, 596, 596, 596, 603, 603, 603, 603,
- 603, 603, 603, 603, 603, 603, 603, 603, 610, 610,
- 610, 610, 610, 610, 610, 610, 610, 610, 610, 610,
- 614, 614, 614, 614, 614, 614, 614, 614, 614, 614,
- 614, 614, 618, 618, 618, 618, 618, 618, 618, 618,
- 618, 618, 618, 618, 622, 622, 622, 622, 622, 622,
- 622, 622, 622, 622, 622, 622, 625, 625, 625, 625,
- 625, 625, 625, 625, 625, 625, 625, 625, 629, 629,
- 629, 629, 629, 629, 629, 629, 629, 629, 629, 629,
- 635, 635, 635, 635, 635, 635, 635, 635, 635, 635,
-
- 635, 635, 640, 640, 640, 640, 640, 640, 640, 640,
- 640, 640, 640, 640, 645, 645, 645, 645, 645, 645,
- 645, 645, 645, 645, 645, 645, 651, 651, 651, 651,
- 651, 651, 651, 651, 651, 651, 651, 651, 653, 653,
- 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
- 655, 655, 655, 655, 655, 655, 655, 655, 655, 655,
- 655, 655, 657, 657, 657, 657, 657, 657, 657, 657,
- 657, 657, 657, 657, 659, 659, 659, 659, 659, 659,
- 659, 659, 659, 659, 659, 659, 661, 661, 661, 661,
- 661, 661, 661, 661, 661, 661, 661, 661, 663, 663,
-
- 663, 663, 663, 663, 663, 663, 663, 663, 663, 663,
- 665, 665, 665, 665, 665, 665, 665, 665, 665, 665,
- 665, 665, 667, 667, 667, 667, 667, 667, 667, 667,
- 667, 667, 667, 667, 669, 669, 669, 669, 669, 669,
- 669, 669, 669, 669, 669, 669, 671, 671, 671, 671,
- 671, 671, 671, 671, 671, 671, 671, 671, 673, 673,
- 673, 673, 673, 673, 673, 673, 673, 673, 673, 673,
- 675, 675, 675, 675, 675, 675, 675, 675, 675, 675,
- 675, 675, 677, 677, 677, 677, 677, 677, 677, 677,
- 677, 677, 677, 677, 679, 679, 679, 679, 679, 679,
-
- 679, 679, 679, 679, 679, 679, 681, 681, 681, 681,
- 681, 681, 681, 681, 681, 681, 681, 681, 683, 683,
- 683, 683, 683, 683, 683, 683, 683, 683, 683, 683,
- 685, 685, 685, 685, 685, 685, 685, 685, 685, 685,
- 685, 685, 687, 687, 687, 687, 687, 687, 687, 687,
- 687, 687, 687, 687, 689, 689, 689, 689, 689, 689,
- 689, 689, 689, 689, 689, 689, 691, 691, 691, 691,
- 691, 691, 691, 691, 691, 691, 691, 691, 693, 693,
- 693, 693, 693, 693, 693, 693, 693, 693, 693, 693,
- 695, 695, 695, 695, 695, 695, 695, 695, 695, 695,
-
- 695, 695, 697, 697, 697, 697, 697, 697, 697, 697,
- 697, 697, 697, 697, 699, 699, 699, 699, 699, 699,
- 699, 699, 699, 699, 699, 699, 701, 701, 701, 701,
- 701, 701, 701, 701, 701, 701, 701, 701, 703, 703,
- 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
- 705, 705, 705, 705, 705, 705, 705, 705, 705, 705,
- 705, 705, 707, 707, 707, 707, 707, 707, 707, 707,
- 707, 707, 707, 707, 709, 709, 709, 709, 709, 709,
- 709, 709, 709, 709, 709, 709, 711, 711, 711, 711,
- 711, 711, 711, 711, 711, 711, 711, 711, 713, 713,
-
- 713, 713, 713, 713, 713, 713, 713, 713, 713, 713,
- 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
- 715, 715, 717, 717, 717, 717, 717, 717, 717, 717,
- 717, 717, 717, 717, 719, 719, 719, 719, 719, 719,
- 719, 719, 719, 719, 719, 719, 721, 721, 721, 721,
- 721, 721, 721, 721, 721, 721, 721, 721, 723, 723,
- 723, 723, 723, 723, 723, 723, 723, 723, 723, 723,
- 725, 725, 725, 725, 725, 725, 725, 725, 725, 725,
- 725, 725, 727, 727, 727, 727, 727, 727, 727, 727,
- 727, 727, 727, 727, 729, 729, 729, 729, 729, 729,
-
- 729, 729, 729, 729, 729, 729, 731, 731, 731, 731,
- 731, 731, 731, 731, 731, 731, 731, 731, 733, 733,
- 733, 733, 733, 733, 733, 733, 733, 733, 733, 733,
- 735, 735, 735, 735, 735, 735, 735, 735, 735, 735,
- 735, 735, 737, 737, 737, 737, 737, 737, 737, 737,
- 737, 737, 737, 737, 739, 739, 739, 739, 739, 739,
- 739, 739, 739, 739, 739, 739, 741, 741, 741, 741,
- 741, 741, 741, 741, 741, 741, 741, 741, 743, 743,
- 743, 743, 743, 743, 743, 743, 743, 743, 743, 743,
- 745, 745, 745, 745, 745, 745, 745, 745, 745, 745,
-
- 745, 745, 747, 747, 747, 747, 747, 747, 747, 747,
- 747, 747, 747, 747, 749, 749, 749, 749, 749, 749,
- 749, 749, 749, 749, 749, 749, 751, 751, 751, 751,
- 751, 751, 751, 751, 751, 751, 751, 751, 753, 753,
- 753, 753, 753, 753, 753, 753, 753, 753, 753, 753,
- 755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
- 755, 755, 757, 757, 757, 757, 757, 757, 757, 757,
- 757, 757, 757, 757, 759, 759, 759, 759, 759, 759,
- 759, 759, 759, 759, 759, 759, 761, 761, 761, 761,
- 761, 761, 761, 761, 761, 761, 761, 761, 763, 763,
-
- 763, 763, 763, 763, 763, 763, 763, 763, 763, 763,
- 765, 765, 765, 765, 765, 765, 765, 765, 765, 765,
- 765, 765, 767, 767, 767, 767, 767, 767, 767, 767,
- 767, 767, 767, 767, 769, 769, 769, 769, 769, 769,
- 769, 769, 769, 769, 769, 769, 771, 771, 771, 771,
- 771, 771, 771, 771, 771, 771, 771, 771, 773, 773,
- 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
- 775, 775, 775, 775, 775, 775, 775, 775, 775, 775,
- 775, 775, 777, 777, 777, 777, 777, 777, 777, 777,
- 777, 777, 777, 777, 779, 779, 779, 779, 779, 779,
-
- 779, 779, 779, 779, 779, 779, 781, 781, 781, 781,
- 781, 781, 781, 781, 781, 781, 781, 781, 783, 783,
- 783, 783, 783, 783, 783, 783, 783, 783, 783, 783,
- 785, 785, 785, 785, 785, 785, 785, 785, 785, 785,
- 785, 785, 787, 787, 787, 787, 787, 787, 787, 787,
- 787, 787, 787, 787, 789, 789, 789, 789, 789, 789,
- 789, 789, 789, 789, 789, 789, 791, 791, 791, 791,
- 791, 791, 791, 791, 791, 791, 791, 791, 793, 793,
- 793, 793, 793, 793, 793, 793, 793, 793, 793, 793,
- 795, 795, 795, 795, 795, 795, 795, 795, 795, 795,
-
- 795, 795, 797, 797, 797, 797, 797, 797, 797, 797,
- 797, 797, 797, 797, 799, 799, 799, 799, 799, 799,
- 799, 799, 799, 799, 799, 799, 801, 801, 801, 801,
- 801, 801, 801, 801, 801, 801, 801, 801, 803, 803,
- 803, 803, 803, 803, 803, 803, 803, 803, 803, 803,
- 805, 805, 805, 805, 805, 805, 805, 805, 805, 805,
- 805, 805, 807, 807, 807, 807, 807, 807, 807, 807,
- 807, 807, 807, 807, 809, 809, 809, 809, 809, 809,
- 809, 809, 809, 809, 809, 809, 811, 811, 811, 811,
- 811, 811, 811, 811, 811, 811, 811, 811, 813, 813,
-
- 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
- 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
- 815, 815, 817, 817, 817, 817, 817, 817, 817, 817,
- 817, 817, 817, 817, 819, 819, 819, 819, 819, 819,
- 819, 819, 819, 819, 819, 819, 821, 821, 821, 821,
- 821, 821, 821, 821, 821, 821, 821, 821, 823, 823,
- 823, 823, 823, 823, 823, 823, 823, 823, 823, 823,
- 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
- 825, 825, 827, 827, 827, 827, 827, 827, 827, 827,
- 827, 827, 827, 827, 829, 829, 829, 829, 829, 829,
-
- 829, 829, 829, 829, 829, 829, 831, 831, 831, 831,
- 831, 831, 831, 831, 831, 831, 831, 831, 833, 833,
- 833, 833, 833, 833, 833, 833, 833, 833, 833, 833,
- 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
- 835, 835, 837, 837, 837, 837, 837, 837, 837, 837,
- 837, 837, 837, 837, 839, 839, 839, 839, 839, 839,
- 839, 839, 839, 839, 839, 839, 841, 841, 841, 841,
- 841, 841, 841, 841, 841, 841, 841, 841, 843, 843,
- 843, 843, 843, 843, 843, 843, 843, 843, 843, 843,
- 845, 845, 845, 845, 845, 845, 845, 845, 845, 845,
-
- 845, 845, 847, 847, 847, 847, 847, 847, 847, 847,
- 847, 847, 847, 847, 849, 849, 849, 849, 849, 849,
- 849, 849, 849, 849, 849, 849, 851, 851, 851, 851,
- 851, 851, 851, 851, 851, 851, 851, 851, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 853, 853, 853,
- 855, 855, 855, 855, 855, 855, 855, 855, 855, 855,
- 855, 855, 857, 857, 857, 857, 857, 857, 857, 857,
- 857, 857, 857, 857, 859, 859, 859, 859, 859, 859,
- 859, 859, 859, 859, 859, 859, 861, 861, 861, 861,
- 861, 861, 861, 861, 861, 861, 861, 861, 863, 863,
-
- 863, 863, 863, 863, 863, 863, 863, 863, 863, 863,
- 865, 865, 865, 865, 865, 865, 865, 865, 865, 865,
- 865, 865, 867, 867, 867, 867, 867, 867, 867, 867,
- 867, 867, 867, 867, 869, 869, 869, 869, 869, 869,
- 869, 869, 869, 869, 869, 869, 871, 871, 871, 871,
- 871, 871, 871, 871, 871, 871, 871, 871, 873, 873,
- 873, 873, 873, 873, 873, 873, 873, 873, 873, 873,
- 875, 875, 875, 875, 875, 875, 875, 875, 875, 875,
- 875, 875, 877, 877, 877, 877, 877, 877, 877, 877,
- 877, 877, 877, 877, 879, 879, 879, 879, 879, 879,
-
- 879, 879, 879, 879, 879, 879, 881, 881, 881, 881,
- 881, 881, 881, 881, 881, 881, 881, 881, 883, 883,
- 883, 883, 883, 883, 883, 883, 883, 883, 883, 883,
- 885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
- 885, 885, 887, 887, 887, 887, 887, 887, 887, 887,
- 887, 887, 887, 887, 889, 889, 889, 889, 889, 889,
- 889, 889, 889, 889, 889, 889, 891, 891, 891, 891,
- 891, 891, 891, 891, 891, 891, 891, 891, 893, 893,
- 893, 893, 893, 893, 893, 893, 893, 893, 893, 893,
- 895, 895, 895, 895, 895, 895, 895, 895, 895, 895,
-
- 895, 895, 897, 897, 897, 897, 897, 897, 897, 897,
- 897, 897, 897, 897, 899, 899, 899, 899, 899, 899,
- 899, 899, 899, 899, 899, 899, 901, 901, 901, 901,
- 901, 901, 901, 901, 901, 901, 901, 901, 903, 903,
- 903, 903, 903, 903, 903, 903, 903, 903, 903, 903,
- 905, 905, 905, 905, 905, 905, 905, 905, 905, 905,
- 905, 905, 907, 907, 907, 907, 907, 907, 907, 907,
- 907, 907, 907, 907, 909, 909, 909, 909, 909, 909,
- 909, 909, 909, 909, 909, 909, 911, 911, 911, 911,
- 911, 911, 911, 911, 911, 911, 911, 911, 913, 913,
-
- 913, 913, 913, 913, 913, 913, 913, 913, 913, 913,
- 915, 915, 915, 915, 915, 915, 915, 915, 915, 915,
- 915, 915, 917, 917, 917, 917, 917, 917, 917, 917,
- 917, 917, 917, 917, 919, 919, 919, 919, 919, 919,
- 919, 919, 919, 919, 919, 919, 921, 921, 921, 921,
- 921, 921, 921, 921, 921, 921, 921, 921, 923, 923,
- 923, 923, 923, 923, 923, 923, 923, 923, 923, 923,
- 925, 925, 925, 925, 925, 925, 925, 925, 925, 925,
- 925, 925, 927, 927, 927, 927, 927, 927, 927, 927,
- 927, 927, 927, 927, 929, 929, 929, 929, 929, 929,
-
- 929, 929, 929, 929, 929, 929, 931, 931, 931, 931,
- 931, 931, 931, 931, 931, 931, 931, 931, 933, 933,
- 933, 933, 933, 933, 933, 933, 933, 933, 933, 933,
- 935, 935, 935, 935, 935, 935, 935, 935, 935, 935,
- 935, 935, 937, 937, 937, 937, 937, 937, 937, 937,
- 937, 937, 937, 937, 939, 939, 939, 939, 939, 939,
- 939, 939, 939, 939, 939, 939, 941, 941, 941, 941,
- 941, 941, 941, 941, 941, 941, 941, 941, 943, 943,
- 943, 943, 943, 943, 943, 943, 943, 943, 943, 943,
- 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
-
- 945, 945, 947, 947, 947, 947, 947, 947, 947, 947,
- 947, 947, 947, 947, 949, 949, 949, 949, 949, 949,
- 949, 949, 949, 949, 949, 949, 951, 951, 951, 951,
- 951, 951, 951, 951, 951, 951, 951, 951, 953, 953,
- 953, 953, 953, 953, 953, 953, 953, 953, 953, 953,
- 955, 955, 955, 955, 955, 955, 955, 955, 955, 955,
- 955, 955, 957, 957, 957, 957, 957, 957, 957, 957,
- 957, 957, 957, 957, 959, 959, 959, 959, 959, 959,
- 959, 959, 959, 959, 959, 959, 961, 961, 961, 961,
- 961, 961, 961, 961, 961, 961, 961, 961, 963, 963,
-
- 963, 963, 963, 963, 963, 963, 963, 963, 963, 963,
- 965, 965, 965, 965, 965, 965, 965, 965, 965, 965,
- 965, 965, 967, 967, 967, 967, 967, 967, 967, 967,
- 967, 967, 967, 967, 969, 969, 969, 969, 969, 969,
- 969, 969, 969, 969, 969, 969, 971, 971, 971, 971,
- 971, 971, 971, 971, 971, 971, 971, 971, 973, 973,
- 973, 973, 973, 973, 973, 973, 973, 973, 973, 973,
- 975, 975, 975, 975, 975, 975, 975, 975, 975, 975,
- 975, 975, 977, 977, 977, 977, 977, 977, 977, 977,
- 977, 977, 977, 977, 979, 979, 979, 979, 979, 979,
-
- 979, 979, 979, 979, 979, 979, 981, 981, 981, 981,
- 981, 981, 981, 981, 981, 981, 981, 981, 983, 983,
- 983, 983, 983, 983, 983, 983, 983, 983, 983, 983,
- 985, 985, 985, 985, 985, 985, 985, 985, 985, 985,
- 985, 985, 987, 987, 987, 987, 987, 987, 987, 987,
- 987, 987, 987, 987, 989, 989, 989, 989, 989, 989,
- 989, 989, 989, 989, 989, 989, 991, 991, 991, 991,
- 991, 991, 991, 991, 991, 991, 991, 991, 993, 993,
- 993, 993, 993, 993, 993, 993, 993, 993, 993, 993,
- 995, 995, 995, 995, 995, 995, 995, 995, 995, 995,
-
- 995, 995, 997, 997, 997, 997, 997, 997, 997, 997,
- 997, 997, 997, 997, 999, 999, 999, 999, 999, 999,
- 999, 999, 999, 999, 999, 999, 1001, 1001, 1001, 1001,
- 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1003, 1003,
- 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003,
- 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
- 1005, 1005, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007,
- 1007, 1007, 1007, 1007, 1009, 1009, 1009, 1009, 1009, 1009,
- 1009, 1009, 1009, 1009, 1009, 1009, 1011, 1011, 1011, 1011,
- 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1013, 1013,
-
- 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
- 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
- 1015, 1015, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
- 1017, 1017, 1017, 1017, 1019, 1019, 1019, 1019, 1019, 1019,
- 1019, 1019, 1019, 1019, 1019, 1019, 1021, 1021, 1021, 1021,
- 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1023, 1023,
- 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023,
- 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025,
- 1025, 1025, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
- 1027, 1027, 1027, 1027, 1029, 1029, 1029, 1029, 1029, 1029,
-
- 1029, 1029, 1029, 1029, 1029, 1029, 1031, 1031, 1031, 1031,
- 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1033, 1033,
- 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
- 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035,
- 1035, 1035, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037,
- 1037, 1037, 1037, 1037, 1039, 1039, 1039, 1039, 1039, 1039,
- 1039, 1039, 1039, 1039, 1039, 1039, 1041, 1041, 1041, 1041,
- 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1043, 1043,
- 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043,
- 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-
- 1045, 1045, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
- 1047, 1047, 1047, 1047, 1049, 1049, 1049, 1049, 1049, 1049,
- 1049, 1049, 1049, 1049, 1049, 1049, 1051, 1051, 1051, 1051,
- 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1053, 1053,
- 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
- 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
- 1055, 1055, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057,
- 1057, 1057, 1057, 1057, 1059, 1059, 1059, 1059, 1059, 1059,
- 1059, 1059, 1059, 1059, 1059, 1059, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1063, 1063,
-
- 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
- 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
- 1065, 1065, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067,
- 1067, 1067, 1067, 1067, 1069, 1069, 1069, 1069, 1069, 1069,
- 1069, 1069, 1069, 1069, 1069, 1069, 1071, 1071, 1071, 1071,
- 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1073, 1073,
- 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
- 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075,
- 1075, 1075, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
- 1077, 1077, 1077, 1077, 1079, 1079, 1079, 1079, 1079, 1079,
-
- 1079, 1079, 1079, 1079, 1079, 1079, 1081, 1081, 1081, 1081,
- 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1083, 1083,
- 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
- 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085,
- 1085, 1085, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
- 1087, 1087, 1087, 1087, 1089, 1089, 1089, 1089, 1089, 1089,
- 1089, 1089, 1089, 1089, 1089, 1089, 1091, 1091, 1091, 1091,
- 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1093, 1093,
- 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
- 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
-
- 1095, 1095, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
- 1097, 1097, 1097, 1097, 1099, 1099, 1099, 1099, 1099, 1099,
- 1099, 1099, 1099, 1099, 1099, 1099, 1101, 1101, 1101, 1101,
- 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1103, 1103,
- 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103,
- 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105,
- 1105, 1105, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107,
- 1107, 1107, 1107, 1107, 1109, 1109, 1109, 1109, 1109, 1109,
- 1109, 1109, 1109, 1109, 1109, 1109, 1111, 1111, 1111, 1111,
- 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1113, 1113,
-
- 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
- 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115,
- 1115, 1115, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
- 1117, 1117, 1117, 1117, 1119, 1119, 1119, 1119, 1119, 1119,
- 1119, 1119, 1119, 1119, 1119, 1119, 1121, 1121, 1121, 1121,
- 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1123, 1123,
- 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123,
- 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125,
- 1125, 1125, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127,
- 1127, 1127, 1127, 1127, 1129, 1129, 1129, 1129, 1129, 1129,
-
- 1129, 1129, 1129, 1129, 1129, 1129, 1131, 1131, 1131, 1131,
- 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1133, 1133,
- 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133,
- 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135,
- 1135, 1135, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137,
- 1137, 1137, 1137, 1137, 1139, 1139, 1139, 1139, 1139, 1139,
- 1139, 1139, 1139, 1139, 1139, 1139, 1141, 1141, 1141, 1141,
- 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1143, 1143,
- 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143,
- 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145,
-
- 1145, 1145, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
- 1147, 1147, 1147, 1147, 1149, 1149, 1149, 1149, 1149, 1149,
- 1149, 1149, 1149, 1149, 1149, 1149, 1151, 1151, 1151, 1151,
- 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1153, 1153,
- 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
- 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,
- 1155, 1155, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
- 1157, 1157, 1157, 1157, 1159, 1159, 1159, 1159, 1159, 1159,
- 1159, 1159, 1159, 1159, 1159, 1159, 1161, 1161, 1161, 1161,
- 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1163, 1163,
-
- 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
- 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
- 1165, 1165, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167,
- 1167, 1167, 1167, 1167, 1169, 1169, 1169, 1169, 1169, 1169,
- 1169, 1169, 1169, 1169, 1169, 1169, 1171, 1171, 1171, 1171,
- 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1173, 1173,
- 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
- 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
- 1175, 1175, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177,
- 1177, 1177, 1177, 1177, 1179, 1179, 1179, 1179, 1179, 1179,
-
- 1179, 1179, 1179, 1179, 1179, 1179, 1181, 1181, 1181, 1181,
- 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1183, 1183,
- 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183,
- 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
- 1185, 1185, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187,
- 1187, 1187, 1187, 1187, 1189, 1189, 1189, 1189, 1189, 1189,
- 1189, 1189, 1189, 1189, 1189, 1189, 1191, 1191, 1191, 1191,
- 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1193, 1193,
- 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
- 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
-
- 1195, 1195, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
- 1197, 1197, 1197, 1197, 1199, 1199, 1199, 1199, 1199, 1199,
- 1199, 1199, 1199, 1199, 1199, 1199, 1201, 1201, 1201, 1201,
- 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1203, 1203,
- 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
- 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
- 1205, 1205, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207,
- 1207, 1207, 1207, 1207, 1209, 1209, 1209, 1209, 1209, 1209,
- 1209, 1209, 1209, 1209, 1209, 1209, 1211, 1211, 1211, 1211,
- 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1213, 1213,
-
- 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
- 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
- 1215, 1215, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
- 1217, 1217, 1217, 1217, 1219, 1219, 1219, 1219, 1219, 1219,
- 1219, 1219, 1219, 1219, 1219, 1219, 1221, 1221, 1221, 1221,
- 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1223, 1223,
- 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
- 1225, 1225, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227,
- 1227, 1227, 1227, 1227, 1229, 1229, 1229, 1229, 1229, 1229,
-
- 1229, 1229, 1229, 1229, 1229, 1229, 1231, 1231, 1231, 1231,
- 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1233, 1233,
- 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
- 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
- 1235, 1235, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237,
- 1237, 1237, 1237, 1237, 1239, 1239, 1239, 1239, 1239, 1239,
- 1239, 1239, 1239, 1239, 1239, 1239, 1241, 1241, 1241, 1241,
- 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1243, 1243,
- 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
- 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
-
- 1245, 1245, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247,
- 1247, 1247, 1247, 1247, 1249, 1249, 1249, 1249, 1249, 1249,
- 1249, 1249, 1249, 1249, 1249, 1249, 1251, 1251, 1251, 1251,
- 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1253, 1253,
- 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253,
- 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255,
- 1255, 1255, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257,
- 1257, 1257, 1257, 1257, 1259, 1259, 1259, 1259, 1259, 1259,
- 1259, 1259, 1259, 1259, 1259, 1259, 1261, 1261, 1261, 1261,
- 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1263, 1263,
-
- 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263,
- 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265,
- 1265, 1265, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
- 1267, 1267, 1267, 1267, 1269, 1269, 1269, 1269, 1269, 1269,
- 1269, 1269, 1269, 1269, 1269, 1269, 1271, 1271, 1271, 1271,
- 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1273, 1273,
- 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
- 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275,
- 1275, 1275, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277,
- 1277, 1277, 1277, 1277, 1279, 1279, 1279, 1279, 1279, 1279,
-
- 1279, 1279, 1279, 1279, 1279, 1279, 1281, 1281, 1281, 1281,
- 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1283, 1283,
- 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283,
- 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285,
- 1285, 1285, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287,
- 1287, 1287, 1287, 1287, 1289, 1289, 1289, 1289, 1289, 1289,
- 1289, 1289, 1289, 1289, 1289, 1289, 1291, 1291, 1291, 1291,
- 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1293, 1293,
- 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293,
- 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295,
-
- 1295, 1295, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297,
- 1297, 1297, 1297, 1297, 1299, 1299, 1299, 1299, 1299, 1299,
- 1299, 1299, 1299, 1299, 1299, 1299, 1301, 1301, 1301, 1301,
- 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1303, 1303,
- 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303,
- 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305,
- 1305, 1305, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
- 1307, 1307, 1307, 1307, 1309, 1309, 1309, 1309, 1309, 1309,
- 1309, 1309, 1309, 1309, 1309, 1309, 1311, 1311, 1311, 1311,
- 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1313, 1313,
-
- 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313,
- 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315,
- 1315, 1315, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
- 1317, 1317, 1317, 1317, 1319, 1319, 1319, 1319, 1319, 1319,
- 1319, 1319, 1319, 1319, 1319, 1319, 1321, 1321, 1321, 1321,
- 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1323, 1323,
- 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323,
- 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325,
- 1325, 1325, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327,
- 1327, 1327, 1327, 1327, 1329, 1329, 1329, 1329, 1329, 1329,
-
- 1329, 1329, 1329, 1329, 1329, 1329, 1331, 1331, 1331, 1331,
- 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1333, 1333,
- 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333,
- 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335,
- 1335, 1335, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337,
- 1337, 1337, 1337, 1337, 1339, 1339, 1339, 1339, 1339, 1339,
- 1339, 1339, 1339, 1339, 1339, 1339, 1341, 1341, 1341, 1341,
- 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1343, 1343,
- 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
- 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345,
-
- 1345, 1345, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347,
- 1347, 1347, 1347, 1347, 1349, 1349, 1349, 1349, 1349, 1349,
- 1349, 1349, 1349, 1349, 1349, 1349, 1351, 1351, 1351, 1351,
- 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1353, 1353,
- 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353,
- 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355,
- 1355, 1355, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357,
- 1357, 1357, 1357, 1357, 1359, 1359, 1359, 1359, 1359, 1359,
- 1359, 1359, 1359, 1359, 1359, 1359, 1361, 1361, 1361, 1361,
- 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1363, 1363,
-
- 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363,
- 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
- 1365, 1365, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367,
- 1367, 1367, 1367, 1367, 1369, 1369, 1369, 1369, 1369, 1369,
- 1369, 1369, 1369, 1369, 1369, 1369, 1371, 1371, 1371, 1371,
- 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1373, 1373,
- 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373,
- 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375,
- 1375, 1375, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377,
- 1377, 1377, 1377, 1377, 1379, 1379, 1379, 1379, 1379, 1379,
-
- 1379, 1379, 1379, 1379, 1379, 1379, 1381, 1381, 1381, 1381,
- 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1383, 1383,
- 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383,
- 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385,
- 1385, 1385, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387,
- 1387, 1387, 1387, 1387, 1389, 1389, 1389, 1389, 1389, 1389,
- 1389, 1389, 1389, 1389, 1389, 1389, 1391, 1391, 1391, 1391,
- 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1393, 1393,
- 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393,
- 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395,
-
- 1395, 1395, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397,
- 1397, 1397, 1397, 1397, 1399, 1399, 1399, 1399, 1399, 1399,
- 1399, 1399, 1399, 1399, 1399, 1399, 1401, 1401, 1401, 1401,
- 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1403, 1403,
- 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403,
- 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405,
- 1405, 1405, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407,
- 1407, 1407, 1407, 1407, 486, 485, 484, 483, 482, 481,
- 480, 479, 478, 477, 476, 475, 474, 473, 472, 408,
- 471, 470, 469, 466, 465, 404, 464, 460, 459, 456,
-
- 454, 453, 452, 451, 450, 449, 448, 447, 446, 445,
- 444, 443, 442, 441, 440, 439, 438, 437, 436, 435,
- 434, 433, 432, 431, 430, 429, 428, 427, 426, 425,
- 424, 423, 422, 421, 420, 419, 418, 417, 416, 415,
- 414, 413, 412, 411, 339, 407, 406, 405, 404, 403,
- 399, 398, 397, 396, 395, 394, 393, 389, 388, 387,
- 386, 385, 384, 383, 382, 381, 378, 377, 376, 375,
- 374, 373, 372, 371, 370, 369, 368, 367, 366, 360,
- 359, 358, 357, 356, 353, 352, 351, 350, 349, 348,
- 347, 346, 345, 344, 341, 270, 339, 338, 336, 335,
-
- 334, 333, 332, 331, 330, 329, 328, 249, 327, 326,
- 325, 230, 226, 1409, 223, 220, 320, 319, 318, 317,
- 316, 315, 314, 313, 312, 309, 306, 305, 304, 300,
- 299, 298, 297, 296, 293, 292, 291, 290, 289, 288,
- 285, 280, 279, 278, 277, 269, 268, 265, 260, 259,
- 258, 257, 256, 255, 254, 253, 252, 251, 1409, 247,
- 246, 244, 110, 243, 241, 241, 240, 238, 237, 226,
- 223, 221, 220, 211, 205, 204, 203, 196, 193, 192,
- 191, 186, 170, 165, 163, 162, 153, 138, 116, 110,
- 1409, 102, 102, 101, 101, 25, 25, 23, 1409, 1409,
-
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409
+ 111, 111, 436, 111, 117, 117, 117, 117, 435, 117,
+ 117, 117, 117, 117, 117, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 164, 434, 433, 164,
+ 208, 208, 208, 432, 208, 208, 431, 208, 208, 214,
+ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
+
+ 219, 430, 429, 219, 222, 222, 222, 222, 222, 428,
+ 222, 222, 222, 222, 222, 232, 427, 426, 425, 424,
+ 232, 232, 423, 232, 234, 422, 421, 234, 235, 420,
+ 419, 235, 236, 236, 236, 236, 236, 236, 418, 236,
+ 236, 236, 236, 239, 239, 239, 239, 239, 239, 239,
+ 239, 239, 239, 239, 243, 243, 243, 243, 243, 243,
+ 243, 243, 243, 243, 243, 249, 417, 416, 249, 325,
+ 325, 325, 325, 325, 325, 325, 325, 325, 325, 325,
+ 341, 415, 414, 413, 412, 340, 408, 407, 406, 341,
+ 393, 393, 393, 393, 393, 393, 393, 393, 393, 393,
+
+ 393, 411, 405, 404, 400, 399, 411, 398, 397, 411,
+ 456, 456, 456, 456, 456, 456, 456, 456, 456, 456,
+ 456, 503, 503, 503, 503, 503, 503, 503, 503, 503,
+ 503, 503, 539, 539, 539, 539, 539, 539, 539, 539,
+ 539, 539, 539, 568, 568, 568, 568, 568, 568, 568,
+ 568, 568, 568, 568, 585, 585, 585, 585, 585, 585,
+ 585, 585, 585, 585, 585, 597, 597, 597, 597, 597,
+ 597, 597, 597, 597, 597, 597, 604, 604, 604, 604,
+ 604, 604, 604, 604, 604, 604, 604, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 615, 615,
+
+ 615, 615, 615, 615, 615, 615, 615, 615, 615, 619,
+ 619, 619, 619, 619, 619, 619, 619, 619, 619, 619,
+ 623, 623, 623, 623, 623, 623, 623, 623, 623, 623,
+ 623, 626, 626, 626, 626, 626, 626, 626, 626, 626,
+ 626, 626, 630, 630, 630, 630, 630, 630, 630, 630,
+ 630, 630, 630, 636, 636, 636, 636, 636, 636, 636,
+ 636, 636, 636, 636, 641, 641, 641, 641, 641, 641,
+ 641, 641, 641, 641, 641, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 652, 652, 652, 652,
+ 652, 652, 652, 652, 652, 652, 652, 654, 654, 654,
+
+ 654, 654, 654, 654, 654, 654, 654, 654, 656, 656,
+ 656, 656, 656, 656, 656, 656, 656, 656, 656, 658,
+ 658, 658, 658, 658, 658, 658, 658, 658, 658, 658,
+ 660, 660, 660, 660, 660, 660, 660, 660, 660, 660,
+ 660, 662, 662, 662, 662, 662, 662, 662, 662, 662,
+ 662, 662, 664, 664, 664, 664, 664, 664, 664, 664,
+ 664, 664, 664, 666, 666, 666, 666, 666, 666, 666,
+ 666, 666, 666, 666, 668, 668, 668, 668, 668, 668,
+ 668, 668, 668, 668, 668, 670, 670, 670, 670, 670,
+ 670, 670, 670, 670, 670, 670, 672, 672, 672, 672,
+
+ 672, 672, 672, 672, 672, 672, 672, 674, 674, 674,
+ 674, 674, 674, 674, 674, 674, 674, 674, 676, 676,
+ 676, 676, 676, 676, 676, 676, 676, 676, 676, 678,
+ 678, 678, 678, 678, 678, 678, 678, 678, 678, 678,
+ 680, 680, 680, 680, 680, 680, 680, 680, 680, 680,
+ 680, 682, 682, 682, 682, 682, 682, 682, 682, 682,
+ 682, 682, 684, 684, 684, 684, 684, 684, 684, 684,
+ 684, 684, 684, 686, 686, 686, 686, 686, 686, 686,
+ 686, 686, 686, 686, 688, 688, 688, 688, 688, 688,
+ 688, 688, 688, 688, 688, 690, 690, 690, 690, 690,
+
+ 690, 690, 690, 690, 690, 690, 692, 692, 692, 692,
+ 692, 692, 692, 692, 692, 692, 692, 694, 694, 694,
+ 694, 694, 694, 694, 694, 694, 694, 694, 696, 696,
+ 696, 696, 696, 696, 696, 696, 696, 696, 696, 698,
+ 698, 698, 698, 698, 698, 698, 698, 698, 698, 698,
+ 700, 700, 700, 700, 700, 700, 700, 700, 700, 700,
+ 700, 702, 702, 702, 702, 702, 702, 702, 702, 702,
+ 702, 702, 704, 704, 704, 704, 704, 704, 704, 704,
+ 704, 704, 704, 706, 706, 706, 706, 706, 706, 706,
+ 706, 706, 706, 706, 708, 708, 708, 708, 708, 708,
+
+ 708, 708, 708, 708, 708, 710, 710, 710, 710, 710,
+ 710, 710, 710, 710, 710, 710, 712, 712, 712, 712,
+ 712, 712, 712, 712, 712, 712, 712, 714, 714, 714,
+ 714, 714, 714, 714, 714, 714, 714, 714, 716, 716,
+ 716, 716, 716, 716, 716, 716, 716, 716, 716, 718,
+ 718, 718, 718, 718, 718, 718, 718, 718, 718, 718,
+ 720, 720, 720, 720, 720, 720, 720, 720, 720, 720,
+ 720, 722, 722, 722, 722, 722, 722, 722, 722, 722,
+ 722, 722, 724, 724, 724, 724, 724, 724, 724, 724,
+ 724, 724, 724, 726, 726, 726, 726, 726, 726, 726,
+
+ 726, 726, 726, 726, 728, 728, 728, 728, 728, 728,
+ 728, 728, 728, 728, 728, 730, 730, 730, 730, 730,
+ 730, 730, 730, 730, 730, 730, 732, 732, 732, 732,
+ 732, 732, 732, 732, 732, 732, 732, 734, 734, 734,
+ 734, 734, 734, 734, 734, 734, 734, 734, 736, 736,
+ 736, 736, 736, 736, 736, 736, 736, 736, 736, 738,
+ 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
+ 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
+ 740, 742, 742, 742, 742, 742, 742, 742, 742, 742,
+ 742, 742, 744, 744, 744, 744, 744, 744, 744, 744,
+
+ 744, 744, 744, 746, 746, 746, 746, 746, 746, 746,
+ 746, 746, 746, 746, 748, 748, 748, 748, 748, 748,
+ 748, 748, 748, 748, 748, 750, 750, 750, 750, 750,
+ 750, 750, 750, 750, 750, 750, 752, 752, 752, 752,
+ 752, 752, 752, 752, 752, 752, 752, 754, 754, 754,
+ 754, 754, 754, 754, 754, 754, 754, 754, 756, 756,
+ 756, 756, 756, 756, 756, 756, 756, 756, 756, 758,
+ 758, 758, 758, 758, 758, 758, 758, 758, 758, 758,
+ 760, 760, 760, 760, 760, 760, 760, 760, 760, 760,
+ 760, 762, 762, 762, 762, 762, 762, 762, 762, 762,
+
+ 762, 762, 764, 764, 764, 764, 764, 764, 764, 764,
+ 764, 764, 764, 766, 766, 766, 766, 766, 766, 766,
+ 766, 766, 766, 766, 768, 768, 768, 768, 768, 768,
+ 768, 768, 768, 768, 768, 770, 770, 770, 770, 770,
+ 770, 770, 770, 770, 770, 770, 772, 772, 772, 772,
+ 772, 772, 772, 772, 772, 772, 772, 774, 774, 774,
+ 774, 774, 774, 774, 774, 774, 774, 774, 776, 776,
+ 776, 776, 776, 776, 776, 776, 776, 776, 776, 778,
+ 778, 778, 778, 778, 778, 778, 778, 778, 778, 778,
+ 780, 780, 780, 780, 780, 780, 780, 780, 780, 780,
+
+ 780, 782, 782, 782, 782, 782, 782, 782, 782, 782,
+ 782, 782, 784, 784, 784, 784, 784, 784, 784, 784,
+ 784, 784, 784, 786, 786, 786, 786, 786, 786, 786,
+ 786, 786, 786, 786, 788, 788, 788, 788, 788, 788,
+ 788, 788, 788, 788, 788, 790, 790, 790, 790, 790,
+ 790, 790, 790, 790, 790, 790, 792, 792, 792, 792,
+ 792, 792, 792, 792, 792, 792, 792, 794, 794, 794,
+ 794, 794, 794, 794, 794, 794, 794, 794, 796, 796,
+ 796, 796, 796, 796, 796, 796, 796, 796, 796, 798,
+ 798, 798, 798, 798, 798, 798, 798, 798, 798, 798,
+
+ 800, 800, 800, 800, 800, 800, 800, 800, 800, 800,
+ 800, 802, 802, 802, 802, 802, 802, 802, 802, 802,
+ 802, 802, 804, 804, 804, 804, 804, 804, 804, 804,
+ 804, 804, 804, 806, 806, 806, 806, 806, 806, 806,
+ 806, 806, 806, 806, 808, 808, 808, 808, 808, 808,
+ 808, 808, 808, 808, 808, 810, 810, 810, 810, 810,
+ 810, 810, 810, 810, 810, 810, 812, 812, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 814, 814, 814,
+ 814, 814, 814, 814, 814, 814, 814, 814, 816, 816,
+ 816, 816, 816, 816, 816, 816, 816, 816, 816, 818,
+
+ 818, 818, 818, 818, 818, 818, 818, 818, 818, 818,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 822, 822, 822, 822, 822, 822, 822, 822, 822,
+ 822, 822, 824, 824, 824, 824, 824, 824, 824, 824,
+ 824, 824, 824, 826, 826, 826, 826, 826, 826, 826,
+ 826, 826, 826, 826, 828, 828, 828, 828, 828, 828,
+ 828, 828, 828, 828, 828, 830, 830, 830, 830, 830,
+ 830, 830, 830, 830, 830, 830, 832, 832, 832, 832,
+ 832, 832, 832, 832, 832, 832, 832, 834, 834, 834,
+ 834, 834, 834, 834, 834, 834, 834, 834, 836, 836,
+
+ 836, 836, 836, 836, 836, 836, 836, 836, 836, 838,
+ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838,
+ 840, 840, 840, 840, 840, 840, 840, 840, 840, 840,
+ 840, 842, 842, 842, 842, 842, 842, 842, 842, 842,
+ 842, 842, 844, 844, 844, 844, 844, 844, 844, 844,
+ 844, 844, 844, 846, 846, 846, 846, 846, 846, 846,
+ 846, 846, 846, 846, 848, 848, 848, 848, 848, 848,
+ 848, 848, 848, 848, 848, 850, 850, 850, 850, 850,
+ 850, 850, 850, 850, 850, 850, 852, 852, 852, 852,
+ 852, 852, 852, 852, 852, 852, 852, 854, 854, 854,
+
+ 854, 854, 854, 854, 854, 854, 854, 854, 856, 856,
+ 856, 856, 856, 856, 856, 856, 856, 856, 856, 858,
+ 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
+ 860, 860, 860, 860, 860, 860, 860, 860, 860, 860,
+ 860, 862, 862, 862, 862, 862, 862, 862, 862, 862,
+ 862, 862, 864, 864, 864, 864, 864, 864, 864, 864,
+ 864, 864, 864, 866, 866, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 868, 868, 868, 868, 868, 868,
+ 868, 868, 868, 868, 868, 870, 870, 870, 870, 870,
+ 870, 870, 870, 870, 870, 870, 872, 872, 872, 872,
+
+ 872, 872, 872, 872, 872, 872, 872, 874, 874, 874,
+ 874, 874, 874, 874, 874, 874, 874, 874, 876, 876,
+ 876, 876, 876, 876, 876, 876, 876, 876, 876, 878,
+ 878, 878, 878, 878, 878, 878, 878, 878, 878, 878,
+ 880, 880, 880, 880, 880, 880, 880, 880, 880, 880,
+ 880, 882, 882, 882, 882, 882, 882, 882, 882, 882,
+ 882, 882, 884, 884, 884, 884, 884, 884, 884, 884,
+ 884, 884, 884, 886, 886, 886, 886, 886, 886, 886,
+ 886, 886, 886, 886, 888, 888, 888, 888, 888, 888,
+ 888, 888, 888, 888, 888, 890, 890, 890, 890, 890,
+
+ 890, 890, 890, 890, 890, 890, 892, 892, 892, 892,
+ 892, 892, 892, 892, 892, 892, 892, 894, 894, 894,
+ 894, 894, 894, 894, 894, 894, 894, 894, 896, 896,
+ 896, 896, 896, 896, 896, 896, 896, 896, 896, 898,
+ 898, 898, 898, 898, 898, 898, 898, 898, 898, 898,
+ 900, 900, 900, 900, 900, 900, 900, 900, 900, 900,
+ 900, 902, 902, 902, 902, 902, 902, 902, 902, 902,
+ 902, 902, 904, 904, 904, 904, 904, 904, 904, 904,
+ 904, 904, 904, 906, 906, 906, 906, 906, 906, 906,
+ 906, 906, 906, 906, 908, 908, 908, 908, 908, 908,
+
+ 908, 908, 908, 908, 908, 910, 910, 910, 910, 910,
+ 910, 910, 910, 910, 910, 910, 912, 912, 912, 912,
+ 912, 912, 912, 912, 912, 912, 912, 914, 914, 914,
+ 914, 914, 914, 914, 914, 914, 914, 914, 916, 916,
+ 916, 916, 916, 916, 916, 916, 916, 916, 916, 918,
+ 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
+ 920, 920, 920, 920, 920, 920, 920, 920, 920, 920,
+ 920, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+ 922, 922, 924, 924, 924, 924, 924, 924, 924, 924,
+ 924, 924, 924, 926, 926, 926, 926, 926, 926, 926,
+
+ 926, 926, 926, 926, 928, 928, 928, 928, 928, 928,
+ 928, 928, 928, 928, 928, 930, 930, 930, 930, 930,
+ 930, 930, 930, 930, 930, 930, 932, 932, 932, 932,
+ 932, 932, 932, 932, 932, 932, 932, 934, 934, 934,
+ 934, 934, 934, 934, 934, 934, 934, 934, 936, 936,
+ 936, 936, 936, 936, 936, 936, 936, 936, 936, 938,
+ 938, 938, 938, 938, 938, 938, 938, 938, 938, 938,
+ 940, 940, 940, 940, 940, 940, 940, 940, 940, 940,
+ 940, 942, 942, 942, 942, 942, 942, 942, 942, 942,
+ 942, 942, 944, 944, 944, 944, 944, 944, 944, 944,
+
+ 944, 944, 944, 946, 946, 946, 946, 946, 946, 946,
+ 946, 946, 946, 946, 948, 948, 948, 948, 948, 948,
+ 948, 948, 948, 948, 948, 950, 950, 950, 950, 950,
+ 950, 950, 950, 950, 950, 950, 952, 952, 952, 952,
+ 952, 952, 952, 952, 952, 952, 952, 954, 954, 954,
+ 954, 954, 954, 954, 954, 954, 954, 954, 956, 956,
+ 956, 956, 956, 956, 956, 956, 956, 956, 956, 958,
+ 958, 958, 958, 958, 958, 958, 958, 958, 958, 958,
+ 960, 960, 960, 960, 960, 960, 960, 960, 960, 960,
+ 960, 962, 962, 962, 962, 962, 962, 962, 962, 962,
+
+ 962, 962, 964, 964, 964, 964, 964, 964, 964, 964,
+ 964, 964, 964, 966, 966, 966, 966, 966, 966, 966,
+ 966, 966, 966, 966, 968, 968, 968, 968, 968, 968,
+ 968, 968, 968, 968, 968, 970, 970, 970, 970, 970,
+ 970, 970, 970, 970, 970, 970, 972, 972, 972, 972,
+ 972, 972, 972, 972, 972, 972, 972, 974, 974, 974,
+ 974, 974, 974, 974, 974, 974, 974, 974, 976, 976,
+ 976, 976, 976, 976, 976, 976, 976, 976, 976, 978,
+ 978, 978, 978, 978, 978, 978, 978, 978, 978, 978,
+ 980, 980, 980, 980, 980, 980, 980, 980, 980, 980,
+
+ 980, 982, 982, 982, 982, 982, 982, 982, 982, 982,
+ 982, 982, 984, 984, 984, 984, 984, 984, 984, 984,
+ 984, 984, 984, 986, 986, 986, 986, 986, 986, 986,
+ 986, 986, 986, 986, 988, 988, 988, 988, 988, 988,
+ 988, 988, 988, 988, 988, 990, 990, 990, 990, 990,
+ 990, 990, 990, 990, 990, 990, 992, 992, 992, 992,
+ 992, 992, 992, 992, 992, 992, 992, 994, 994, 994,
+ 994, 994, 994, 994, 994, 994, 994, 994, 996, 996,
+ 996, 996, 996, 996, 996, 996, 996, 996, 996, 998,
+ 998, 998, 998, 998, 998, 998, 998, 998, 998, 998,
+
+ 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000,
+ 1000, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
+ 1002, 1002, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004,
+ 1004, 1004, 1004, 1006, 1006, 1006, 1006, 1006, 1006, 1006,
+ 1006, 1006, 1006, 1006, 1008, 1008, 1008, 1008, 1008, 1008,
+ 1008, 1008, 1008, 1008, 1008, 1010, 1010, 1010, 1010, 1010,
+ 1010, 1010, 1010, 1010, 1010, 1010, 1012, 1012, 1012, 1012,
+ 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1014, 1014, 1014,
+ 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1016, 1016,
+ 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1018,
+
+ 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018,
+ 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
+ 1020, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
+ 1022, 1022, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+ 1024, 1024, 1024, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
+ 1026, 1026, 1026, 1026, 1028, 1028, 1028, 1028, 1028, 1028,
+ 1028, 1028, 1028, 1028, 1028, 1030, 1030, 1030, 1030, 1030,
+ 1030, 1030, 1030, 1030, 1030, 1030, 1032, 1032, 1032, 1032,
+ 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1034, 1034, 1034,
+ 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1036, 1036,
+
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1038,
+ 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
+ 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
+ 1040, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
+ 1042, 1042, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044,
+ 1044, 1044, 1044, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+ 1046, 1046, 1046, 1046, 1048, 1048, 1048, 1048, 1048, 1048,
+ 1048, 1048, 1048, 1048, 1048, 1050, 1050, 1050, 1050, 1050,
+ 1050, 1050, 1050, 1050, 1050, 1050, 1052, 1052, 1052, 1052,
+ 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1054, 1054, 1054,
+
+ 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1056, 1056,
+ 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1058,
+ 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058,
+ 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060,
+ 1060, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
+ 1062, 1062, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064,
+ 1064, 1064, 1064, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
+ 1066, 1066, 1066, 1066, 1068, 1068, 1068, 1068, 1068, 1068,
+ 1068, 1068, 1068, 1068, 1068, 1070, 1070, 1070, 1070, 1070,
+ 1070, 1070, 1070, 1070, 1070, 1070, 1072, 1072, 1072, 1072,
+
+ 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1074, 1074, 1074,
+ 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1076, 1076,
+ 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1078,
+ 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078,
+ 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
+ 1080, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082,
+ 1082, 1082, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084,
+ 1084, 1084, 1084, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
+ 1086, 1086, 1086, 1086, 1088, 1088, 1088, 1088, 1088, 1088,
+ 1088, 1088, 1088, 1088, 1088, 1090, 1090, 1090, 1090, 1090,
+
+ 1090, 1090, 1090, 1090, 1090, 1090, 1092, 1092, 1092, 1092,
+ 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1096, 1096,
+ 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1098,
+ 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098,
+ 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100,
+ 1100, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102,
+ 1102, 1102, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
+ 1104, 1104, 1104, 1106, 1106, 1106, 1106, 1106, 1106, 1106,
+ 1106, 1106, 1106, 1106, 1108, 1108, 1108, 1108, 1108, 1108,
+
+ 1108, 1108, 1108, 1108, 1108, 1110, 1110, 1110, 1110, 1110,
+ 1110, 1110, 1110, 1110, 1110, 1110, 1112, 1112, 1112, 1112,
+ 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1114, 1114, 1114,
+ 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1116, 1116,
+ 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1118,
+ 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118,
+ 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120,
+ 1120, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122,
+ 1122, 1122, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124,
+ 1124, 1124, 1124, 1126, 1126, 1126, 1126, 1126, 1126, 1126,
+
+ 1126, 1126, 1126, 1126, 1128, 1128, 1128, 1128, 1128, 1128,
+ 1128, 1128, 1128, 1128, 1128, 1130, 1130, 1130, 1130, 1130,
+ 1130, 1130, 1130, 1130, 1130, 1130, 1132, 1132, 1132, 1132,
+ 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1134, 1134, 1134,
+ 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1136, 1136,
+ 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1138,
+ 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
+ 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140,
+ 1140, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,
+ 1142, 1142, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144,
+
+ 1144, 1144, 1144, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
+ 1146, 1146, 1146, 1146, 1148, 1148, 1148, 1148, 1148, 1148,
+ 1148, 1148, 1148, 1148, 1148, 1150, 1150, 1150, 1150, 1150,
+ 1150, 1150, 1150, 1150, 1150, 1150, 1152, 1152, 1152, 1152,
+ 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1154, 1154, 1154,
+ 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1156, 1156,
+ 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1158,
+ 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
+ 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
+ 1160, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
+
+ 1162, 1162, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
+ 1164, 1164, 1164, 1166, 1166, 1166, 1166, 1166, 1166, 1166,
+ 1166, 1166, 1166, 1166, 1168, 1168, 1168, 1168, 1168, 1168,
+ 1168, 1168, 1168, 1168, 1168, 1170, 1170, 1170, 1170, 1170,
+ 1170, 1170, 1170, 1170, 1170, 1170, 1172, 1172, 1172, 1172,
+ 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1174, 1174, 1174,
+ 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1176, 1176,
+ 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1178,
+ 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178,
+ 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
+
+ 1180, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182,
+ 1182, 1182, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
+ 1184, 1184, 1184, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
+ 1186, 1186, 1186, 1186, 1188, 1188, 1188, 1188, 1188, 1188,
+ 1188, 1188, 1188, 1188, 1188, 1190, 1190, 1190, 1190, 1190,
+ 1190, 1190, 1190, 1190, 1190, 1190, 1192, 1192, 1192, 1192,
+ 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1194, 1194, 1194,
+ 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1196, 1196,
+ 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1198,
+ 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
+
+ 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200,
+ 1200, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
+ 1202, 1202, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
+ 1204, 1204, 1204, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
+ 1206, 1206, 1206, 1206, 1208, 1208, 1208, 1208, 1208, 1208,
+ 1208, 1208, 1208, 1208, 1208, 1210, 1210, 1210, 1210, 1210,
+ 1210, 1210, 1210, 1210, 1210, 1210, 1212, 1212, 1212, 1212,
+ 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1214, 1214, 1214,
+ 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1216, 1216,
+ 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1218,
+
+ 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
+ 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
+ 1220, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+ 1222, 1222, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224,
+ 1224, 1224, 1224, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+ 1226, 1226, 1226, 1226, 1228, 1228, 1228, 1228, 1228, 1228,
+ 1228, 1228, 1228, 1228, 1228, 1230, 1230, 1230, 1230, 1230,
+ 1230, 1230, 1230, 1230, 1230, 1230, 1232, 1232, 1232, 1232,
+ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1234, 1234, 1234,
+ 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1236, 1236,
+
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1238,
+ 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238,
+ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
+ 1240, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242,
+ 1242, 1242, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,
+ 1244, 1244, 1244, 1246, 1246, 1246, 1246, 1246, 1246, 1246,
+ 1246, 1246, 1246, 1246, 1248, 1248, 1248, 1248, 1248, 1248,
+ 1248, 1248, 1248, 1248, 1248, 1250, 1250, 1250, 1250, 1250,
+ 1250, 1250, 1250, 1250, 1250, 1250, 1252, 1252, 1252, 1252,
+ 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1254, 1254, 1254,
+
+ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1256, 1256,
+ 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1258,
+ 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258,
+ 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260,
+ 1260, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262,
+ 1262, 1262, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
+ 1264, 1264, 1264, 1266, 1266, 1266, 1266, 1266, 1266, 1266,
+ 1266, 1266, 1266, 1266, 1268, 1268, 1268, 1268, 1268, 1268,
+ 1268, 1268, 1268, 1268, 1268, 1270, 1270, 1270, 1270, 1270,
+ 1270, 1270, 1270, 1270, 1270, 1270, 1272, 1272, 1272, 1272,
+
+ 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1274, 1274, 1274,
+ 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1276, 1276,
+ 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1278,
+ 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278,
+ 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280,
+ 1280, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282,
+ 1282, 1282, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
+ 1284, 1284, 1284, 1286, 1286, 1286, 1286, 1286, 1286, 1286,
+ 1286, 1286, 1286, 1286, 1288, 1288, 1288, 1288, 1288, 1288,
+ 1288, 1288, 1288, 1288, 1288, 1290, 1290, 1290, 1290, 1290,
+
+ 1290, 1290, 1290, 1290, 1290, 1290, 1292, 1292, 1292, 1292,
+ 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1294, 1294, 1294,
+ 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1296, 1296,
+ 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1298,
+ 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298,
+ 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
+ 1300, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302,
+ 1302, 1302, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304,
+ 1304, 1304, 1304, 1306, 1306, 1306, 1306, 1306, 1306, 1306,
+ 1306, 1306, 1306, 1306, 1308, 1308, 1308, 1308, 1308, 1308,
+
+ 1308, 1308, 1308, 1308, 1308, 1310, 1310, 1310, 1310, 1310,
+ 1310, 1310, 1310, 1310, 1310, 1310, 1312, 1312, 1312, 1312,
+ 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1314, 1314, 1314,
+ 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1316, 1316,
+ 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1318,
+ 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318,
+ 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
+ 1320, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+ 1322, 1322, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324,
+ 1324, 1324, 1324, 1326, 1326, 1326, 1326, 1326, 1326, 1326,
+
+ 1326, 1326, 1326, 1326, 1328, 1328, 1328, 1328, 1328, 1328,
+ 1328, 1328, 1328, 1328, 1328, 1330, 1330, 1330, 1330, 1330,
+ 1330, 1330, 1330, 1330, 1330, 1330, 1332, 1332, 1332, 1332,
+ 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1334, 1334, 1334,
+ 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 1336,
+ 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1338,
+ 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338,
+ 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340,
+ 1340, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+ 1342, 1342, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
+
+ 1344, 1344, 1344, 1346, 1346, 1346, 1346, 1346, 1346, 1346,
+ 1346, 1346, 1346, 1346, 1348, 1348, 1348, 1348, 1348, 1348,
+ 1348, 1348, 1348, 1348, 1348, 1350, 1350, 1350, 1350, 1350,
+ 1350, 1350, 1350, 1350, 1350, 1350, 1352, 1352, 1352, 1352,
+ 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1354, 1354, 1354,
+ 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1356, 1356,
+ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1358,
+ 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358,
+ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360,
+ 1360, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362,
+
+ 1362, 1362, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364,
+ 1364, 1364, 1364, 1366, 1366, 1366, 1366, 1366, 1366, 1366,
+ 1366, 1366, 1366, 1366, 1368, 1368, 1368, 1368, 1368, 1368,
+ 1368, 1368, 1368, 1368, 1368, 1370, 1370, 1370, 1370, 1370,
+ 1370, 1370, 1370, 1370, 1370, 1370, 1372, 1372, 1372, 1372,
+ 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1374, 1374, 1374,
+ 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1376, 1376,
+ 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1378,
+ 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378,
+ 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380,
+
+ 1380, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+ 1382, 1382, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
+ 1384, 1384, 1384, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
+ 1386, 1386, 1386, 1386, 1388, 1388, 1388, 1388, 1388, 1388,
+ 1388, 1388, 1388, 1388, 1388, 1390, 1390, 1390, 1390, 1390,
+ 1390, 1390, 1390, 1390, 1390, 1390, 1392, 1392, 1392, 1392,
+ 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1394, 1394, 1394,
+ 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1396, 1396,
+ 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1398,
+ 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398,
+
+ 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400,
+ 1400, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402,
+ 1402, 1402, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404,
+ 1404, 1404, 1404, 1406, 1406, 1406, 1406, 1406, 1406, 1406,
+ 1406, 1406, 1406, 1406, 1408, 1408, 1408, 1408, 1408, 1408,
+ 1408, 1408, 1408, 1408, 1408, 396, 395, 394, 390, 389,
+ 388, 387, 386, 385, 384, 383, 382, 379, 378, 377,
+ 376, 375, 374, 373, 372, 371, 370, 369, 368, 367,
+ 361, 360, 359, 358, 357, 354, 353, 352, 351, 350,
+ 349, 348, 347, 346, 345, 342, 271, 340, 339, 337,
+
+ 336, 335, 334, 333, 332, 331, 330, 329, 250, 328,
+ 327, 326, 230, 226, 1410, 223, 220, 321, 320, 319,
+ 318, 317, 316, 315, 314, 313, 310, 307, 306, 305,
+ 301, 300, 299, 298, 297, 294, 293, 292, 291, 290,
+ 289, 286, 281, 280, 279, 278, 270, 269, 266, 261,
+ 260, 259, 258, 257, 256, 255, 254, 253, 252, 1410,
+ 248, 247, 245, 110, 244, 242, 242, 241, 238, 237,
+ 226, 223, 221, 220, 211, 205, 204, 203, 196, 193,
+ 192, 191, 186, 170, 165, 163, 162, 153, 138, 116,
+ 110, 1410, 102, 102, 101, 101, 25, 25, 23, 1410,
+
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410
} ;
-static yyconst short int yy_chk[8061] =
+static yyconst short int yy_chk[7662] =
{ 0,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
@@ -1880,9 +1837,9 @@ static yyconst short int yy_chk[8061] =
27, 27, 27, 11, 21, 21, 29, 32, 32, 67,
21, 22, 22, 7, 8, 34, 33, 22, 25, 67,
9, 10, 11, 9, 10, 11, 12, 38, 21, 21,
- 29, 12, 33, 933, 34, 22, 22, 39, 38, 40,
+ 29, 12, 33, 934, 34, 22, 22, 39, 38, 40,
40, 40, 25, 46, 46, 40, 39, 39, 47, 47,
- 12, 935, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 936, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
@@ -1899,856 +1856,813 @@ static yyconst short int yy_chk[8061] =
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
- 15, 15, 15, 15, 35, 41, 937, 52, 45, 42,
+ 15, 15, 15, 15, 35, 41, 938, 52, 45, 42,
41, 42, 42, 42, 45, 45, 45, 41, 43, 52,
43, 43, 43, 52, 52, 64, 73, 88, 64, 42,
- 55, 54, 66, 939, 55, 66, 35, 35, 43, 35,
+ 55, 54, 66, 940, 55, 66, 35, 35, 43, 35,
55, 35, 54, 125, 35, 54, 88, 68, 42, 56,
35, 57, 68, 35, 35, 172, 35, 57, 56, 56,
56, 73, 125, 57, 60, 80, 80, 80, 56, 172,
- 56, 60, 60, 115, 115, 115, 941, 60, 77, 77,
+ 56, 60, 60, 115, 115, 115, 942, 60, 77, 77,
77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 79, 79, 79, 82, 92, 93, 90, 90, 943, 92,
- 93, 94, 94, 95, 95, 113, 117, 82, 82, 90,
- 110, 119, 122, 122, 155, 155, 119, 144, 144, 144,
-
- 174, 92, 93, 174, 95, 945, 110, 79, 113, 110,
- 117, 162, 162, 90, 182, 144, 90, 194, 94, 171,
- 171, 94, 947, 194, 82, 182, 949, 82, 149, 149,
- 149, 951, 150, 110, 150, 150, 150, 151, 196, 151,
- 189, 196, 151, 151, 151, 953, 149, 152, 152, 152,
- 165, 955, 150, 165, 957, 165, 189, 189, 959, 165,
- 165, 152, 152, 152, 152, 152, 152, 212, 212, 212,
- 213, 213, 213, 216, 216, 228, 217, 217, 217, 961,
- 228, 963, 232, 232, 213, 213, 213, 213, 213, 213,
- 217, 217, 217, 217, 217, 217, 229, 233, 233, 243,
-
- 965, 229, 228, 232, 260, 260, 260, 261, 261, 261,
- 262, 262, 262, 967, 273, 243, 285, 285, 243, 263,
- 263, 263, 292, 229, 292, 261, 273, 292, 307, 264,
- 264, 264, 322, 322, 340, 340, 307, 292, 321, 321,
- 321, 292, 243, 264, 264, 264, 264, 264, 264, 323,
- 323, 323, 321, 321, 321, 321, 321, 321, 325, 332,
- 337, 337, 337, 323, 323, 323, 323, 323, 323, 393,
- 332, 394, 394, 394, 325, 397, 400, 325, 404, 410,
- 410, 456, 460, 461, 969, 393, 397, 400, 393, 404,
- 503, 467, 470, 460, 461, 332, 505, 456, 971, 509,
-
- 456, 325, 467, 470, 539, 510, 503, 505, 511, 503,
- 509, 397, 393, 504, 504, 504, 510, 541, 542, 511,
- 539, 543, 973, 539, 456, 540, 540, 540, 541, 542,
- 545, 975, 543, 503, 547, 547, 547, 568, 570, 570,
- 570, 545, 585, 977, 979, 981, 597, 539, 604, 983,
- 611, 985, 987, 568, 615, 619, 568, 989, 585, 547,
- 623, 585, 597, 570, 604, 597, 611, 604, 540, 611,
- 615, 619, 991, 615, 619, 993, 623, 995, 997, 623,
- 568, 624, 624, 624, 999, 585, 1001, 1003, 626, 597,
- 1005, 604, 1007, 611, 627, 627, 627, 615, 619, 1009,
-
- 630, 1011, 1013, 623, 626, 624, 1015, 626, 628, 628,
- 628, 636, 628, 644, 644, 644, 630, 628, 627, 630,
- 631, 631, 631, 641, 631, 646, 1017, 636, 1019, 631,
- 636, 626, 649, 649, 649, 1021, 1023, 652, 644, 641,
- 1025, 646, 641, 630, 646, 654, 656, 1027, 1029, 1031,
- 1033, 1035, 1037, 652, 636, 628, 652, 649, 658, 660,
- 662, 654, 656, 1039, 654, 656, 641, 631, 646, 1041,
- 1043, 664, 1045, 1047, 658, 660, 662, 658, 660, 662,
- 652, 666, 1049, 1051, 1053, 1055, 1057, 664, 654, 656,
- 664, 668, 670, 672, 1059, 1061, 1063, 666, 1065, 674,
-
- 666, 658, 660, 662, 676, 1067, 678, 668, 670, 672,
- 668, 670, 672, 680, 664, 674, 1069, 1071, 674, 1073,
- 676, 682, 678, 676, 666, 678, 1075, 684, 1077, 680,
- 1079, 1081, 680, 1083, 668, 670, 672, 682, 686, 688,
- 682, 1085, 674, 684, 690, 1087, 684, 676, 1089, 678,
- 692, 1091, 694, 1093, 686, 688, 680, 686, 688, 696,
- 690, 698, 1095, 690, 682, 1097, 692, 700, 694, 692,
- 684, 694, 702, 704, 1099, 696, 1101, 698, 696, 1103,
- 698, 686, 688, 700, 706, 1105, 700, 690, 702, 704,
- 708, 702, 704, 692, 1107, 694, 1109, 1111, 710, 1113,
-
- 706, 1115, 696, 706, 698, 712, 708, 714, 1117, 708,
- 700, 1119, 716, 718, 710, 702, 704, 710, 720, 722,
- 724, 712, 1121, 714, 712, 1123, 714, 706, 716, 718,
- 726, 716, 718, 708, 720, 722, 724, 720, 722, 724,
- 1125, 710, 1127, 1129, 1131, 1133, 726, 1135, 712, 726,
- 714, 728, 730, 732, 1137, 716, 718, 1139, 734, 736,
- 738, 720, 722, 724, 740, 742, 744, 728, 730, 732,
- 728, 730, 732, 726, 734, 736, 738, 734, 736, 738,
- 740, 742, 744, 740, 742, 744, 1141, 1143, 1145, 1147,
- 1149, 1151, 1153, 1155, 728, 730, 732, 746, 748, 750,
-
- 1157, 734, 736, 738, 752, 754, 756, 740, 742, 744,
- 758, 760, 762, 746, 748, 750, 746, 748, 750, 764,
- 752, 754, 756, 752, 754, 756, 758, 760, 762, 758,
- 760, 762, 1159, 1161, 1163, 764, 1165, 1167, 764, 1169,
- 746, 748, 750, 1171, 766, 768, 1173, 752, 754, 756,
- 770, 772, 774, 758, 760, 762, 776, 778, 780, 1175,
- 766, 768, 764, 766, 768, 782, 770, 772, 774, 770,
- 772, 774, 776, 778, 780, 776, 778, 780, 1177, 1179,
- 1181, 782, 1183, 1185, 782, 1187, 784, 766, 768, 1189,
- 786, 788, 1191, 770, 772, 774, 790, 792, 794, 776,
-
- 778, 780, 784, 796, 798, 784, 786, 788, 782, 786,
- 788, 800, 790, 792, 794, 790, 792, 794, 1193, 796,
- 798, 1195, 796, 798, 1197, 1199, 802, 800, 1201, 784,
- 800, 1203, 804, 786, 788, 1205, 806, 808, 1207, 790,
- 792, 794, 802, 810, 812, 802, 796, 798, 804, 814,
- 1209, 804, 806, 808, 800, 806, 808, 816, 818, 810,
- 812, 1211, 810, 812, 1213, 814, 820, 1215, 814, 802,
- 1217, 1219, 822, 816, 818, 804, 816, 818, 824, 806,
- 808, 1221, 820, 826, 1223, 820, 810, 812, 822, 828,
- 1225, 822, 814, 1227, 824, 830, 1229, 824, 1231, 826,
-
- 816, 818, 826, 832, 834, 828, 1233, 1235, 828, 820,
- 1237, 830, 836, 1239, 830, 822, 1241, 838, 840, 832,
- 834, 824, 832, 834, 842, 844, 826, 1243, 836, 846,
- 1245, 836, 828, 838, 840, 848, 838, 840, 830, 1247,
- 842, 844, 1249, 842, 844, 846, 832, 834, 846, 1251,
- 850, 848, 1253, 1255, 848, 836, 1257, 852, 854, 1259,
- 838, 840, 1261, 856, 858, 860, 850, 842, 844, 850,
- 862, 864, 846, 852, 854, 866, 852, 854, 848, 856,
- 858, 860, 856, 858, 860, 1263, 862, 864, 1265, 862,
- 864, 866, 1267, 850, 866, 1269, 868, 1271, 1273, 1275,
-
- 852, 854, 1277, 870, 872, 874, 856, 858, 860, 876,
- 878, 880, 868, 862, 864, 868, 882, 884, 866, 870,
- 872, 874, 870, 872, 874, 876, 878, 880, 876, 878,
- 880, 1279, 882, 884, 1281, 882, 884, 1283, 1285, 868,
- 1287, 1289, 886, 1291, 1293, 1295, 870, 872, 874, 888,
- 890, 892, 876, 878, 880, 894, 896, 898, 886, 882,
- 884, 886, 900, 902, 904, 888, 890, 892, 888, 890,
- 892, 894, 896, 898, 894, 896, 898, 1297, 900, 902,
- 904, 900, 902, 904, 1299, 886, 1301, 1303, 1305, 1307,
- 1309, 1311, 888, 890, 892, 906, 908, 910, 894, 896,
-
- 898, 912, 914, 916, 1313, 900, 902, 904, 918, 920,
- 922, 906, 908, 910, 906, 908, 910, 912, 914, 916,
- 912, 914, 916, 1315, 918, 920, 922, 918, 920, 922,
- 1317, 924, 1319, 1321, 1323, 1325, 1327, 1329, 906, 908,
- 910, 926, 928, 930, 912, 914, 916, 924, 932, 934,
- 924, 918, 920, 922, 936, 1331, 938, 926, 928, 930,
- 926, 928, 930, 940, 932, 934, 1333, 932, 934, 1335,
- 936, 942, 938, 936, 924, 938, 1337, 944, 1339, 940,
- 1341, 1343, 940, 1345, 926, 928, 930, 942, 946, 948,
- 942, 932, 934, 944, 950, 1347, 944, 936, 1349, 938,
-
- 952, 1351, 954, 1353, 946, 948, 940, 946, 948, 956,
- 950, 958, 1355, 950, 942, 1357, 952, 960, 954, 952,
- 944, 954, 962, 964, 1359, 956, 1361, 958, 956, 1363,
- 958, 946, 948, 960, 966, 1365, 960, 950, 962, 964,
- 968, 962, 964, 952, 1367, 954, 1369, 1371, 970, 1373,
- 966, 1375, 956, 966, 958, 972, 968, 974, 1377, 968,
- 960, 1379, 976, 978, 970, 962, 964, 970, 980, 982,
- 984, 972, 1381, 974, 972, 1383, 974, 966, 976, 978,
- 986, 976, 978, 968, 980, 982, 984, 980, 982, 984,
- 1385, 970, 1387, 1389, 1391, 1393, 986, 1395, 972, 986,
-
- 974, 988, 990, 992, 1397, 976, 978, 1399, 994, 996,
- 998, 980, 982, 984, 1000, 1002, 1004, 988, 990, 992,
- 988, 990, 992, 986, 994, 996, 998, 994, 996, 998,
- 1000, 1002, 1004, 1000, 1002, 1004, 1401, 1403, 1405, 1417,
- 931, 929, 927, 925, 988, 990, 992, 1006, 1008, 1010,
- 923, 994, 996, 998, 1012, 1014, 1016, 1000, 1002, 1004,
- 1018, 1020, 1022, 1006, 1008, 1010, 1006, 1008, 1010, 1024,
- 1012, 1014, 1016, 1012, 1014, 1016, 1018, 1020, 1022, 1018,
- 1020, 1022, 921, 919, 917, 1024, 915, 913, 1024, 911,
- 1006, 1008, 1010, 909, 1026, 1028, 907, 1012, 1014, 1016,
-
- 1030, 1032, 1034, 1018, 1020, 1022, 1036, 1038, 1040, 905,
- 1026, 1028, 1024, 1026, 1028, 1042, 1030, 1032, 1034, 1030,
- 1032, 1034, 1036, 1038, 1040, 1036, 1038, 1040, 903, 901,
- 899, 1042, 897, 895, 1042, 893, 1044, 1026, 1028, 891,
- 1046, 1048, 889, 1030, 1032, 1034, 1050, 1052, 1054, 1036,
- 1038, 1040, 1044, 1056, 1058, 1044, 1046, 1048, 1042, 1046,
- 1048, 1060, 1050, 1052, 1054, 1050, 1052, 1054, 887, 1056,
- 1058, 885, 1056, 1058, 883, 881, 1062, 1060, 879, 1044,
- 1060, 877, 1064, 1046, 1048, 875, 1066, 1068, 873, 1050,
- 1052, 1054, 1062, 1070, 1072, 1062, 1056, 1058, 1064, 1074,
-
- 871, 1064, 1066, 1068, 1060, 1066, 1068, 1076, 1078, 1070,
- 1072, 869, 1070, 1072, 867, 1074, 1080, 865, 1074, 1062,
- 863, 861, 1082, 1076, 1078, 1064, 1076, 1078, 1084, 1066,
- 1068, 859, 1080, 1086, 857, 1080, 1070, 1072, 1082, 1088,
- 855, 1082, 1074, 853, 1084, 1090, 851, 1084, 849, 1086,
- 1076, 1078, 1086, 1092, 1094, 1088, 847, 845, 1088, 1080,
- 843, 1090, 1096, 841, 1090, 1082, 839, 1098, 1100, 1092,
- 1094, 1084, 1092, 1094, 1102, 1104, 1086, 837, 1096, 1106,
- 835, 1096, 1088, 1098, 1100, 1108, 1098, 1100, 1090, 833,
- 1102, 1104, 831, 1102, 1104, 1106, 1092, 1094, 1106, 829,
-
- 1110, 1108, 827, 825, 1108, 1096, 823, 1112, 1114, 821,
- 1098, 1100, 819, 1116, 1118, 1120, 1110, 1102, 1104, 1110,
- 1122, 1124, 1106, 1112, 1114, 1126, 1112, 1114, 1108, 1116,
- 1118, 1120, 1116, 1118, 1120, 817, 1122, 1124, 815, 1122,
- 1124, 1126, 813, 1110, 1126, 811, 1128, 809, 807, 805,
- 1112, 1114, 803, 1130, 1132, 1134, 1116, 1118, 1120, 1136,
- 1138, 1140, 1128, 1122, 1124, 1128, 1142, 1144, 1126, 1130,
- 1132, 1134, 1130, 1132, 1134, 1136, 1138, 1140, 1136, 1138,
- 1140, 801, 1142, 1144, 799, 1142, 1144, 797, 795, 1128,
- 793, 791, 1146, 789, 787, 785, 1130, 1132, 1134, 1148,
-
- 1150, 1152, 1136, 1138, 1140, 1154, 1156, 1158, 1146, 1142,
- 1144, 1146, 1160, 1162, 1164, 1148, 1150, 1152, 1148, 1150,
- 1152, 1154, 1156, 1158, 1154, 1156, 1158, 783, 1160, 1162,
- 1164, 1160, 1162, 1164, 781, 1146, 779, 777, 775, 773,
- 771, 769, 1148, 1150, 1152, 1166, 1168, 1170, 1154, 1156,
- 1158, 1172, 1174, 1176, 767, 1160, 1162, 1164, 1178, 1180,
- 1182, 1166, 1168, 1170, 1166, 1168, 1170, 1172, 1174, 1176,
- 1172, 1174, 1176, 765, 1178, 1180, 1182, 1178, 1180, 1182,
- 763, 1184, 761, 759, 757, 755, 753, 751, 1166, 1168,
- 1170, 1186, 1188, 1190, 1172, 1174, 1176, 1184, 1192, 1194,
-
- 1184, 1178, 1180, 1182, 1196, 749, 1198, 1186, 1188, 1190,
- 1186, 1188, 1190, 1200, 1192, 1194, 747, 1192, 1194, 745,
- 1196, 1202, 1198, 1196, 1184, 1198, 743, 1204, 741, 1200,
- 739, 737, 1200, 735, 1186, 1188, 1190, 1202, 1206, 1208,
- 1202, 1192, 1194, 1204, 1210, 733, 1204, 1196, 731, 1198,
- 1212, 729, 1214, 727, 1206, 1208, 1200, 1206, 1208, 1216,
- 1210, 1218, 725, 1210, 1202, 723, 1212, 1220, 1214, 1212,
- 1204, 1214, 1222, 1224, 721, 1216, 719, 1218, 1216, 717,
- 1218, 1206, 1208, 1220, 1226, 715, 1220, 1210, 1222, 1224,
- 1228, 1222, 1224, 1212, 713, 1214, 711, 709, 1230, 707,
-
- 1226, 705, 1216, 1226, 1218, 1232, 1228, 1234, 703, 1228,
- 1220, 701, 1236, 1238, 1230, 1222, 1224, 1230, 1240, 1242,
- 1244, 1232, 699, 1234, 1232, 697, 1234, 1226, 1236, 1238,
- 1246, 1236, 1238, 1228, 1240, 1242, 1244, 1240, 1242, 1244,
- 695, 1230, 693, 691, 689, 687, 1246, 685, 1232, 1246,
- 1234, 1248, 1250, 1252, 683, 1236, 1238, 681, 1254, 1256,
- 1258, 1240, 1242, 1244, 1260, 1262, 1264, 1248, 1250, 1252,
- 1248, 1250, 1252, 1246, 1254, 1256, 1258, 1254, 1256, 1258,
- 1260, 1262, 1264, 1260, 1262, 1264, 679, 677, 675, 673,
- 671, 669, 667, 665, 1248, 1250, 1252, 1266, 1268, 1270,
-
- 663, 1254, 1256, 1258, 1272, 1274, 1276, 1260, 1262, 1264,
- 1278, 1280, 1282, 1266, 1268, 1270, 1266, 1268, 1270, 1284,
- 1272, 1274, 1276, 1272, 1274, 1276, 1278, 1280, 1282, 1278,
- 1280, 1282, 661, 659, 657, 1284, 655, 653, 1284, 651,
- 1266, 1268, 1270, 648, 1286, 1288, 647, 1272, 1274, 1276,
- 1290, 1292, 1294, 1278, 1280, 1282, 1296, 1298, 1300, 645,
- 1286, 1288, 1284, 1286, 1288, 1302, 1290, 1292, 1294, 1290,
- 1292, 1294, 1296, 1298, 1300, 1296, 1298, 1300, 643, 642,
- 640, 1302, 639, 638, 1302, 637, 1304, 1286, 1288, 635,
- 1306, 1308, 634, 1290, 1292, 1294, 1310, 1312, 1314, 1296,
-
- 1298, 1300, 1304, 1316, 1318, 1304, 1306, 1308, 1302, 1306,
- 1308, 1320, 1310, 1312, 1314, 1310, 1312, 1314, 633, 1316,
- 1318, 632, 1316, 1318, 629, 625, 1322, 1320, 622, 1304,
- 1320, 620, 1324, 1306, 1308, 618, 1326, 1328, 617, 1310,
- 1312, 1314, 1322, 1330, 1332, 1322, 1316, 1318, 1324, 1334,
- 616, 1324, 1326, 1328, 1320, 1326, 1328, 1336, 1338, 1330,
- 1332, 614, 1330, 1332, 613, 1334, 1340, 612, 1334, 1322,
- 610, 607, 1342, 1336, 1338, 1324, 1336, 1338, 1344, 1326,
- 1328, 605, 1340, 1346, 603, 1340, 1330, 1332, 1342, 1348,
- 602, 1342, 1334, 601, 1344, 1350, 600, 1344, 599, 1346,
-
- 1336, 1338, 1346, 1352, 1354, 1348, 598, 596, 1348, 1340,
- 595, 1350, 1356, 593, 1350, 1342, 588, 1358, 1360, 1352,
- 1354, 1344, 1352, 1354, 1362, 1364, 1346, 587, 1356, 1366,
- 586, 1356, 1348, 1358, 1360, 1368, 1358, 1360, 1350, 584,
- 1362, 1364, 583, 1362, 1364, 1366, 1352, 1354, 1366, 580,
- 1370, 1368, 579, 578, 1368, 1356, 576, 1372, 1374, 575,
- 1358, 1360, 574, 1376, 1378, 1380, 1370, 1362, 1364, 1370,
- 1382, 1384, 1366, 1372, 1374, 1386, 1372, 1374, 1368, 1376,
- 1378, 1380, 1376, 1378, 1380, 573, 1382, 1384, 572, 1382,
- 1384, 1386, 569, 1370, 1386, 567, 1388, 566, 565, 564,
-
- 1372, 1374, 563, 1390, 1392, 1394, 1376, 1378, 1380, 1396,
- 1398, 1400, 1388, 1382, 1384, 1388, 1402, 1404, 1386, 1390,
- 1392, 1394, 1390, 1392, 1394, 1396, 1398, 1400, 1396, 1398,
- 1400, 562, 1402, 1404, 561, 1402, 1404, 558, 557, 1388,
- 556, 553, 1406, 551, 550, 548, 1390, 1392, 1394, 1408,
- 538, 537, 1396, 1398, 1400, 536, 534, 533, 1406, 1402,
- 1404, 1406, 532, 531, 530, 1408, 527, 526, 1408, 525,
- 524, 521, 520, 519, 518, 517, 516, 515, 514, 513,
- 508, 507, 502, 498, 496, 1406, 495, 494, 493, 492,
- 491, 489, 1408, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
-
- 1410, 1410, 1410, 1410, 1410, 1411, 1411, 1411, 1411, 1411,
- 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1412, 1412, 1412,
- 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1413,
+ 79, 79, 79, 82, 92, 93, 90, 90, 944, 92,
+ 93, 94, 94, 95, 95, 103, 103, 82, 82, 90,
+ 117, 103, 110, 119, 113, 122, 122, 194, 119, 155,
+
+ 155, 92, 93, 194, 95, 162, 162, 79, 110, 103,
+ 103, 110, 174, 90, 117, 174, 90, 113, 94, 171,
+ 171, 94, 196, 189, 82, 196, 946, 82, 144, 144,
+ 144, 149, 149, 149, 150, 110, 150, 150, 150, 189,
+ 189, 152, 152, 152, 948, 151, 144, 151, 950, 149,
+ 151, 151, 151, 274, 150, 152, 152, 152, 152, 152,
+ 152, 165, 182, 952, 165, 274, 165, 212, 212, 212,
+ 165, 165, 401, 182, 213, 213, 213, 216, 216, 228,
+ 217, 217, 217, 401, 228, 954, 232, 232, 213, 213,
+ 213, 213, 213, 213, 217, 217, 217, 217, 217, 217,
+
+ 229, 233, 233, 244, 405, 229, 228, 232, 239, 239,
+ 261, 261, 261, 956, 239, 405, 262, 262, 262, 244,
+ 286, 286, 244, 263, 263, 263, 958, 229, 264, 264,
+ 264, 308, 239, 239, 262, 265, 265, 265, 960, 308,
+ 293, 962, 293, 323, 323, 293, 244, 341, 341, 265,
+ 265, 265, 265, 265, 265, 293, 322, 322, 322, 293,
+ 411, 411, 324, 324, 324, 964, 326, 338, 338, 338,
+ 322, 322, 322, 322, 322, 322, 324, 324, 324, 324,
+ 324, 324, 326, 333, 394, 326, 395, 395, 395, 457,
+ 398, 461, 966, 462, 333, 468, 471, 504, 968, 970,
+
+ 394, 398, 461, 394, 462, 457, 468, 471, 457, 326,
+ 505, 505, 505, 504, 506, 972, 504, 510, 511, 333,
+ 512, 974, 540, 976, 978, 506, 398, 394, 510, 511,
+ 569, 512, 457, 541, 541, 541, 542, 543, 540, 544,
+ 504, 540, 546, 548, 548, 548, 569, 542, 543, 569,
+ 544, 586, 980, 546, 571, 571, 571, 982, 598, 605,
+ 625, 625, 625, 984, 612, 540, 616, 586, 548, 986,
+ 586, 620, 624, 569, 598, 605, 541, 598, 605, 571,
+ 612, 627, 616, 612, 625, 616, 988, 620, 624, 990,
+ 620, 624, 631, 992, 586, 994, 996, 627, 998, 1000,
+
+ 627, 598, 605, 628, 628, 628, 1002, 612, 631, 616,
+ 1004, 631, 1006, 1008, 620, 624, 629, 629, 629, 1010,
+ 629, 1012, 637, 642, 627, 629, 1014, 628, 632, 632,
+ 632, 647, 632, 1016, 1018, 631, 1020, 632, 637, 642,
+ 653, 637, 642, 645, 645, 645, 1022, 647, 655, 1024,
+ 647, 650, 650, 650, 657, 1026, 653, 1028, 1030, 653,
+ 1032, 659, 661, 629, 655, 637, 642, 655, 645, 663,
+ 657, 665, 1034, 657, 647, 632, 650, 659, 661, 667,
+ 659, 661, 1036, 653, 669, 663, 1038, 665, 663, 1040,
+ 665, 655, 671, 1042, 673, 667, 1044, 657, 667, 675,
+
+ 669, 677, 1046, 669, 659, 661, 1048, 679, 671, 681,
+ 673, 671, 663, 673, 665, 675, 1050, 677, 675, 1052,
+ 677, 1054, 667, 679, 683, 681, 679, 669, 681, 685,
+ 687, 1056, 1058, 1060, 1062, 671, 1064, 673, 689, 691,
+ 683, 1066, 675, 683, 677, 685, 687, 693, 685, 687,
+ 679, 1068, 681, 1070, 689, 691, 1072, 689, 691, 695,
+ 697, 699, 1074, 693, 1076, 1078, 693, 683, 701, 703,
+ 705, 1080, 685, 687, 1082, 695, 697, 699, 695, 697,
+ 699, 689, 691, 1084, 701, 703, 705, 701, 703, 705,
+ 693, 707, 1086, 1088, 1090, 1092, 1094, 1096, 709, 711,
+
+ 713, 1098, 695, 697, 699, 715, 717, 707, 1100, 1102,
+ 707, 701, 703, 705, 709, 711, 713, 709, 711, 713,
+ 719, 715, 717, 1104, 715, 717, 1106, 1108, 721, 1110,
+ 1112, 1114, 1116, 1118, 707, 723, 719, 725, 1120, 719,
+ 1122, 709, 711, 713, 721, 727, 729, 721, 715, 717,
+ 731, 723, 1124, 725, 723, 1126, 725, 733, 735, 1128,
+ 1130, 727, 729, 719, 727, 729, 731, 737, 739, 731,
+ 1132, 721, 1134, 733, 735, 741, 733, 735, 723, 743,
+ 725, 1136, 1138, 737, 739, 1140, 737, 739, 727, 729,
+ 745, 741, 1142, 731, 741, 743, 747, 749, 743, 1144,
+
+ 733, 735, 1146, 1148, 751, 753, 745, 1150, 1152, 745,
+ 737, 739, 747, 749, 1154, 747, 749, 1156, 741, 755,
+ 751, 753, 743, 751, 753, 757, 759, 761, 1158, 1160,
+ 1162, 1164, 1166, 745, 763, 755, 765, 1168, 755, 747,
+ 749, 757, 759, 761, 757, 759, 761, 751, 753, 1170,
+ 763, 1172, 765, 763, 1174, 765, 767, 769, 1176, 1178,
+ 1180, 1182, 755, 1184, 771, 773, 775, 1186, 757, 759,
+ 761, 777, 767, 769, 1188, 767, 769, 763, 779, 765,
+ 771, 773, 775, 771, 773, 775, 781, 777, 1190, 1192,
+ 777, 1194, 1196, 1198, 779, 1200, 783, 779, 1202, 767,
+
+ 769, 785, 781, 787, 1204, 781, 1206, 771, 773, 775,
+ 1208, 789, 783, 1210, 777, 783, 791, 785, 793, 787,
+ 785, 779, 787, 1212, 795, 1214, 797, 789, 1216, 781,
+ 789, 799, 791, 801, 793, 791, 1218, 793, 1220, 783,
+ 795, 803, 797, 795, 785, 797, 787, 799, 1222, 801,
+ 799, 1224, 801, 1226, 789, 1228, 805, 803, 1230, 791,
+ 803, 793, 807, 809, 811, 1232, 1234, 795, 1236, 797,
+ 813, 815, 805, 1238, 799, 805, 801, 817, 807, 809,
+ 811, 807, 809, 811, 803, 819, 813, 815, 1240, 813,
+ 815, 1242, 821, 817, 1244, 1246, 817, 1248, 1250, 805,
+
+ 823, 819, 825, 1252, 819, 807, 809, 811, 821, 1254,
+ 827, 821, 1256, 813, 815, 829, 823, 831, 825, 823,
+ 817, 825, 833, 835, 1258, 1260, 827, 1262, 819, 827,
+ 837, 829, 839, 831, 829, 821, 831, 1264, 833, 835,
+ 841, 833, 835, 823, 1266, 825, 837, 1268, 839, 837,
+ 1270, 839, 843, 827, 1272, 1274, 841, 1276, 829, 841,
+ 831, 845, 847, 849, 1278, 833, 835, 1280, 843, 851,
+ 853, 843, 1282, 837, 855, 839, 1284, 845, 847, 849,
+ 845, 847, 849, 841, 857, 851, 853, 1286, 851, 853,
+ 855, 859, 861, 855, 1288, 843, 1290, 1292, 1294, 863,
+
+ 857, 1296, 1298, 857, 845, 847, 849, 859, 861, 865,
+ 859, 861, 851, 853, 867, 863, 1300, 855, 863, 1302,
+ 869, 871, 873, 1304, 1306, 865, 1308, 857, 865, 875,
+ 867, 877, 1310, 867, 859, 861, 869, 871, 873, 869,
+ 871, 873, 863, 879, 1312, 875, 1314, 877, 875, 1316,
+ 877, 881, 865, 1318, 1320, 1322, 1324, 867, 1326, 879,
+ 883, 885, 879, 869, 871, 873, 887, 881, 889, 1328,
+ 881, 1330, 875, 891, 877, 1332, 883, 885, 1334, 883,
+ 885, 893, 887, 895, 889, 887, 879, 889, 1336, 891,
+ 1338, 897, 891, 1340, 881, 1342, 899, 893, 901, 895,
+
+ 893, 1344, 895, 883, 885, 1346, 903, 897, 1348, 887,
+ 897, 889, 899, 905, 901, 899, 891, 901, 1350, 907,
+ 1352, 909, 903, 1354, 893, 903, 895, 911, 913, 905,
+ 1356, 1358, 905, 1360, 897, 907, 915, 909, 907, 899,
+ 909, 901, 917, 911, 913, 1362, 911, 913, 1364, 903,
+ 919, 1366, 915, 1368, 1370, 915, 905, 921, 917, 923,
+ 1372, 917, 907, 1374, 909, 925, 919, 927, 1376, 919,
+ 911, 913, 929, 921, 1378, 923, 921, 1380, 923, 915,
+ 931, 925, 933, 927, 925, 917, 927, 935, 929, 1382,
+ 1384, 929, 1386, 919, 1388, 937, 931, 939, 933, 931,
+
+ 921, 933, 923, 935, 1390, 941, 935, 1392, 925, 1394,
+ 927, 937, 943, 939, 937, 929, 939, 945, 947, 1396,
+ 1398, 941, 1400, 931, 941, 933, 949, 951, 943, 1402,
+ 935, 943, 1404, 945, 947, 953, 945, 947, 937, 1406,
+ 939, 1418, 949, 951, 932, 949, 951, 955, 941, 957,
+ 930, 953, 928, 926, 953, 943, 959, 961, 963, 924,
+ 945, 947, 922, 955, 965, 957, 955, 920, 957, 949,
+ 951, 918, 959, 961, 963, 959, 961, 963, 953, 967,
+ 965, 916, 914, 965, 912, 910, 969, 971, 908, 906,
+ 955, 904, 957, 973, 975, 967, 902, 900, 967, 959,
+
+ 961, 963, 969, 971, 977, 969, 971, 965, 979, 973,
+ 975, 898, 973, 975, 896, 981, 983, 894, 892, 890,
+ 977, 888, 967, 977, 979, 985, 987, 979, 886, 969,
+ 971, 981, 983, 989, 981, 983, 973, 975, 991, 884,
+ 882, 985, 987, 880, 985, 987, 993, 977, 995, 989,
+ 878, 979, 989, 876, 991, 997, 999, 991, 981, 983,
+ 874, 1001, 993, 1003, 995, 993, 872, 995, 985, 987,
+ 870, 997, 999, 868, 997, 999, 989, 1001, 1005, 1003,
+ 1001, 991, 1003, 866, 1007, 864, 1009, 862, 860, 993,
+ 858, 995, 1011, 1013, 1005, 856, 854, 1005, 997, 999,
+
+ 1007, 1015, 1009, 1007, 1001, 1009, 1003, 1017, 1011, 1013,
+ 852, 1011, 1013, 850, 1019, 1021, 848, 1015, 846, 844,
+ 1015, 1005, 1023, 1017, 1025, 842, 1017, 1007, 840, 1009,
+ 1019, 1021, 1027, 1019, 1021, 1011, 1013, 1029, 1023, 838,
+ 1025, 1023, 836, 1025, 1015, 1031, 834, 1033, 1027, 832,
+ 1017, 1027, 1035, 1029, 1037, 830, 1029, 1019, 1021, 828,
+ 1039, 1031, 1041, 1033, 1031, 1023, 1033, 1025, 1035, 826,
+ 1037, 1035, 824, 1037, 822, 1027, 1039, 1043, 1041, 1039,
+ 1029, 1041, 1045, 1047, 820, 818, 816, 814, 1031, 812,
+ 1033, 1049, 1051, 1043, 810, 1035, 1043, 1037, 1045, 1047,
+
+ 1053, 1045, 1047, 1039, 808, 1041, 806, 1049, 1051, 804,
+ 1049, 1051, 1055, 1057, 1059, 802, 1053, 800, 798, 1053,
+ 1043, 1061, 1063, 1065, 796, 1045, 1047, 794, 1055, 1057,
+ 1059, 1055, 1057, 1059, 1049, 1051, 792, 1061, 1063, 1065,
+ 1061, 1063, 1065, 1053, 1067, 790, 788, 786, 784, 782,
+ 780, 1069, 1071, 1073, 778, 1055, 1057, 1059, 1075, 1077,
+ 1067, 776, 774, 1067, 1061, 1063, 1065, 1069, 1071, 1073,
+ 1069, 1071, 1073, 1079, 1075, 1077, 772, 1075, 1077, 770,
+ 768, 1081, 766, 764, 762, 760, 758, 1067, 1083, 1079,
+ 1085, 756, 1079, 754, 1069, 1071, 1073, 1081, 1087, 1089,
+
+ 1081, 1075, 1077, 1091, 1083, 752, 1085, 1083, 750, 1085,
+ 1093, 1095, 748, 746, 1087, 1089, 1079, 1087, 1089, 1091,
+ 1097, 1099, 1091, 744, 1081, 742, 1093, 1095, 1101, 1093,
+ 1095, 1083, 1103, 1085, 740, 738, 1097, 1099, 736, 1097,
+ 1099, 1087, 1089, 1105, 1101, 734, 1091, 1101, 1103, 1107,
+ 1109, 1103, 732, 1093, 1095, 730, 728, 1111, 1113, 1105,
+ 726, 724, 1105, 1097, 1099, 1107, 1109, 722, 1107, 1109,
+ 720, 1101, 1115, 1111, 1113, 1103, 1111, 1113, 1117, 1119,
+ 1121, 718, 716, 714, 712, 710, 1105, 1123, 1115, 1125,
+ 708, 1115, 1107, 1109, 1117, 1119, 1121, 1117, 1119, 1121,
+
+ 1111, 1113, 706, 1123, 704, 1125, 1123, 702, 1125, 1127,
+ 1129, 700, 698, 696, 694, 1115, 692, 1131, 1133, 1135,
+ 690, 1117, 1119, 1121, 1137, 1127, 1129, 688, 1127, 1129,
+ 1123, 1139, 1125, 1131, 1133, 1135, 1131, 1133, 1135, 1141,
+ 1137, 686, 684, 1137, 682, 680, 678, 1139, 676, 1143,
+ 1139, 674, 1127, 1129, 1145, 1141, 1147, 672, 1141, 670,
+ 1131, 1133, 1135, 668, 1149, 1143, 666, 1137, 1143, 1151,
+ 1145, 1153, 1147, 1145, 1139, 1147, 664, 1155, 662, 1157,
+ 1149, 660, 1141, 1149, 1159, 1151, 1161, 1153, 1151, 658,
+ 1153, 656, 1143, 1155, 1163, 1157, 1155, 1145, 1157, 1147,
+
+ 1159, 654, 1161, 1159, 652, 1161, 649, 1149, 648, 1165,
+ 1163, 646, 1151, 1163, 1153, 1167, 1169, 1171, 644, 643,
+ 1155, 641, 1157, 1173, 1175, 1165, 640, 1159, 1165, 1161,
+ 1177, 1167, 1169, 1171, 1167, 1169, 1171, 1163, 1179, 1173,
+ 1175, 639, 1173, 1175, 638, 1181, 1177, 636, 635, 1177,
+ 634, 633, 1165, 1183, 1179, 1185, 630, 1179, 1167, 1169,
+ 1171, 1181, 626, 1187, 1181, 623, 1173, 1175, 1189, 1183,
+ 1191, 1185, 1183, 1177, 1185, 1193, 1195, 621, 619, 1187,
+ 618, 1179, 1187, 1197, 1189, 1199, 1191, 1189, 1181, 1191,
+ 617, 1193, 1195, 1201, 1193, 1195, 1183, 615, 1185, 1197,
+
+ 614, 1199, 1197, 613, 1199, 1203, 1187, 611, 608, 1201,
+ 606, 1189, 1201, 1191, 1205, 1207, 1209, 604, 1193, 1195,
+ 603, 1203, 1211, 1213, 1203, 602, 1197, 1215, 1199, 601,
+ 1205, 1207, 1209, 1205, 1207, 1209, 1201, 1217, 1211, 1213,
+ 600, 1211, 1213, 1215, 1219, 1221, 1215, 599, 1203, 597,
+ 596, 594, 1223, 1217, 589, 588, 1217, 1205, 1207, 1209,
+ 1219, 1221, 1225, 1219, 1221, 1211, 1213, 1227, 1223, 587,
+ 1215, 1223, 585, 1229, 1231, 1233, 584, 581, 1225, 580,
+ 1217, 1225, 1235, 1227, 1237, 579, 1227, 1219, 1221, 1229,
+ 1231, 1233, 1229, 1231, 1233, 1223, 1239, 577, 1235, 576,
+
+ 1237, 1235, 575, 1237, 1241, 1225, 574, 573, 570, 568,
+ 1227, 567, 1239, 1243, 1245, 1239, 1229, 1231, 1233, 1247,
+ 1241, 1249, 566, 1241, 565, 1235, 1251, 1237, 564, 1243,
+ 1245, 563, 1243, 1245, 1253, 1247, 1255, 1249, 1247, 1239,
+ 1249, 562, 1251, 559, 1257, 1251, 558, 1241, 557, 1259,
+ 1253, 1261, 1255, 1253, 554, 1255, 1243, 1245, 552, 1263,
+ 1257, 551, 1247, 1257, 1249, 1259, 1265, 1261, 1259, 1251,
+ 1261, 549, 1267, 539, 1269, 1263, 538, 1253, 1263, 1255,
+ 1271, 1273, 1265, 537, 535, 1265, 534, 1257, 1267, 1275,
+ 1269, 1267, 1259, 1269, 1261, 1277, 1271, 1273, 533, 1271,
+
+ 1273, 532, 1263, 1279, 531, 1275, 528, 527, 1275, 1265,
+ 1281, 1277, 1283, 526, 1277, 1267, 525, 1269, 1285, 1279,
+ 1287, 522, 1279, 1271, 1273, 1289, 1281, 521, 1283, 1281,
+ 520, 1283, 1275, 1291, 1285, 1293, 1287, 1285, 1277, 1287,
+ 1295, 1289, 519, 518, 1289, 517, 1279, 516, 1297, 1291,
+ 1299, 1293, 1291, 1281, 1293, 1283, 1295, 515, 1301, 1295,
+ 514, 1285, 509, 1287, 1297, 1303, 1299, 1297, 1289, 1299,
+ 1305, 1307, 508, 503, 1301, 499, 1291, 1301, 1293, 1309,
+ 1311, 1303, 497, 1295, 1303, 496, 1305, 1307, 1313, 1305,
+ 1307, 1297, 495, 1299, 494, 1309, 1311, 493, 1309, 1311,
+
+ 1315, 1301, 1317, 492, 1313, 490, 489, 1313, 1303, 1319,
+ 1321, 1323, 488, 1305, 1307, 487, 1315, 1325, 1317, 1315,
+ 486, 1317, 1309, 1311, 485, 1319, 1321, 1323, 1319, 1321,
+ 1323, 1313, 1327, 1325, 484, 482, 1325, 481, 480, 1329,
+ 1331, 479, 478, 1315, 477, 1317, 1333, 1335, 1327, 476,
+ 475, 1327, 1319, 1321, 1323, 1329, 1331, 1337, 1329, 1331,
+ 1325, 1339, 1333, 1335, 474, 1333, 1335, 473, 1341, 1343,
+ 472, 470, 467, 1337, 466, 1327, 1337, 1339, 1345, 1347,
+ 1339, 465, 1329, 1331, 1341, 1343, 1349, 1341, 1343, 1333,
+ 1335, 1351, 464, 460, 1345, 1347, 459, 1345, 1347, 1353,
+
+ 1337, 1355, 1349, 456, 1339, 1349, 452, 1351, 1357, 1359,
+ 1351, 1341, 1343, 451, 1361, 1353, 1363, 1355, 1353, 450,
+ 1355, 1345, 1347, 449, 1357, 1359, 448, 1357, 1359, 1349,
+ 1361, 1365, 1363, 1361, 1351, 1363, 447, 1367, 446, 1369,
+ 443, 442, 1353, 441, 1355, 1371, 1373, 1365, 440, 439,
+ 1365, 1357, 1359, 1367, 1375, 1369, 1367, 1361, 1369, 1363,
+ 1377, 1371, 1373, 438, 1371, 1373, 437, 1379, 1381, 435,
+ 1375, 434, 433, 1375, 1365, 1383, 1377, 1385, 431, 1377,
+ 1367, 430, 1369, 1379, 1381, 1387, 1379, 1381, 1371, 1373,
+ 1389, 1383, 428, 1385, 1383, 427, 1385, 1375, 1391, 426,
+
+ 1393, 1387, 425, 1377, 1387, 1395, 1389, 1397, 418, 1389,
+ 1379, 1381, 417, 1399, 1391, 1401, 1393, 1391, 1383, 1393,
+ 1385, 1395, 416, 1397, 1395, 415, 1397, 414, 1387, 1399,
+ 1403, 1401, 1399, 1389, 1401, 1405, 1407, 413, 412, 410,
+ 408, 1391, 407, 1393, 1409, 406, 1403, 404, 1395, 1403,
+ 1397, 1405, 1407, 403, 1405, 1407, 1399, 400, 1401, 399,
+ 1409, 397, 396, 1409, 393, 390, 389, 388, 387, 386,
+ 385, 384, 383, 1403, 382, 381, 380, 378, 1405, 1407,
+ 377, 376, 375, 374, 373, 372, 371, 1409, 1411, 1411,
+ 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1412,
+
+ 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412,
1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
1413, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414,
- 1414, 1414, 1414, 1415, 1415, 1415, 1415, 1415, 1415, 1415,
- 1415, 1415, 1415, 488, 1415, 1416, 1416, 1416, 1416, 487,
- 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1418, 1418, 1418,
- 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1419,
- 486, 485, 1419, 1420, 1420, 1420, 484, 1420, 1420, 1420,
-
- 483, 1420, 1420, 1421, 1421, 1421, 1421, 1421, 1421, 1421,
- 1421, 1421, 1421, 1421, 1421, 1422, 481, 480, 1422, 1423,
- 1423, 1423, 1423, 1423, 1423, 479, 1423, 1423, 1423, 1423,
- 1423, 1424, 478, 477, 476, 475, 474, 1424, 1424, 473,
- 1424, 1425, 472, 471, 1425, 1426, 469, 466, 1426, 1427,
- 1427, 1427, 1427, 1427, 1427, 1427, 465, 1427, 1427, 1427,
- 1427, 1428, 1428, 464, 1428, 1428, 463, 1428, 1428, 1428,
+ 1414, 1414, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415,
+ 1415, 1415, 1415, 1416, 1416, 1416, 1416, 1416, 1416, 1416,
+ 1416, 1416, 370, 1416, 1417, 1417, 1417, 1417, 369, 1417,
+ 1417, 1417, 1417, 1417, 1417, 1419, 1419, 1419, 1419, 1419,
+ 1419, 1419, 1419, 1419, 1419, 1419, 1420, 366, 365, 1420,
+ 1421, 1421, 1421, 364, 1421, 1421, 363, 1421, 1421, 1422,
+ 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422,
+
+ 1423, 362, 361, 1423, 1424, 1424, 1424, 1424, 1424, 360,
+ 1424, 1424, 1424, 1424, 1424, 1425, 358, 357, 356, 355,
+ 1425, 1425, 354, 1425, 1426, 353, 352, 1426, 1427, 350,
+ 349, 1427, 1428, 1428, 1428, 1428, 1428, 1428, 348, 1428,
1428, 1428, 1428, 1429, 1429, 1429, 1429, 1429, 1429, 1429,
- 1429, 1429, 1429, 1429, 1429, 1430, 459, 458, 1430, 1431,
- 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
-
- 1431, 1432, 455, 451, 450, 449, 448, 447, 446, 445,
- 442, 1432, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433,
- 1433, 1433, 1433, 1433, 1434, 441, 440, 439, 438, 437,
- 1434, 436, 434, 1434, 1435, 1435, 1435, 1435, 1435, 1435,
- 1435, 1435, 1435, 1435, 1435, 1435, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1437, 1437,
- 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
- 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438,
- 1438, 1438, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439,
+ 1429, 1429, 1429, 1429, 1430, 1430, 1430, 1430, 1430, 1430,
+ 1430, 1430, 1430, 1430, 1430, 1431, 347, 346, 1431, 1432,
+ 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432,
+ 1433, 345, 344, 343, 342, 340, 339, 337, 336, 1433,
+ 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434,
+
+ 1434, 1435, 335, 334, 332, 331, 1435, 330, 329, 1435,
+ 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
+ 1436, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+ 1437, 1437, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438,
+ 1438, 1438, 1438, 1439, 1439, 1439, 1439, 1439, 1439, 1439,
1439, 1439, 1439, 1439, 1440, 1440, 1440, 1440, 1440, 1440,
-
- 1440, 1440, 1440, 1440, 1440, 1440, 1441, 1441, 1441, 1441,
- 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1442, 1442,
- 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442,
- 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443,
- 1443, 1443, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444,
- 1444, 1444, 1444, 1444, 1445, 1445, 1445, 1445, 1445, 1445,
- 1445, 1445, 1445, 1445, 1445, 1445, 1446, 1446, 1446, 1446,
- 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1447, 1447,
- 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447,
- 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448,
-
- 1448, 1448, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449,
+ 1440, 1440, 1440, 1440, 1440, 1441, 1441, 1441, 1441, 1441,
+ 1441, 1441, 1441, 1441, 1441, 1441, 1442, 1442, 1442, 1442,
+ 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1443, 1443, 1443,
+ 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1444, 1444,
+
+ 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1445,
+ 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
+ 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446,
+ 1446, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447,
+ 1447, 1447, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448,
+ 1448, 1448, 1448, 1449, 1449, 1449, 1449, 1449, 1449, 1449,
1449, 1449, 1449, 1449, 1450, 1450, 1450, 1450, 1450, 1450,
- 1450, 1450, 1450, 1450, 1450, 1450, 1451, 1451, 1451, 1451,
- 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1452, 1452,
- 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452,
- 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453,
- 1453, 1453, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454,
- 1454, 1454, 1454, 1454, 1455, 1455, 1455, 1455, 1455, 1455,
- 1455, 1455, 1455, 1455, 1455, 1455, 1456, 1456, 1456, 1456,
- 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1457, 1457,
-
- 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
- 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
- 1458, 1458, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,
+ 1450, 1450, 1450, 1450, 1450, 1451, 1451, 1451, 1451, 1451,
+ 1451, 1451, 1451, 1451, 1451, 1451, 1452, 1452, 1452, 1452,
+ 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1453, 1453, 1453,
+
+ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1454, 1454,
+ 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1455,
+ 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455,
+ 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456,
+ 1456, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
+ 1457, 1457, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1459, 1459, 1459, 1459, 1459, 1459, 1459,
1459, 1459, 1459, 1459, 1460, 1460, 1460, 1460, 1460, 1460,
- 1460, 1460, 1460, 1460, 1460, 1460, 1461, 1461, 1461, 1461,
- 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1462, 1462,
- 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,
- 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
- 1463, 1463, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464,
- 1464, 1464, 1464, 1464, 1465, 1465, 1465, 1465, 1465, 1465,
-
- 1465, 1465, 1465, 1465, 1465, 1465, 1466, 1466, 1466, 1466,
- 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1467, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
- 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
- 1468, 1468, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
+ 1460, 1460, 1460, 1460, 1460, 1461, 1461, 1461, 1461, 1461,
+ 1461, 1461, 1461, 1461, 1461, 1461, 1462, 1462, 1462, 1462,
+
+ 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1463, 1463, 1463,
+ 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1464, 1464,
+ 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1465,
+ 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465,
+ 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466,
+ 1466, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
+ 1467, 1467, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
1469, 1469, 1469, 1469, 1470, 1470, 1470, 1470, 1470, 1470,
- 1470, 1470, 1470, 1470, 1470, 1470, 1471, 1471, 1471, 1471,
- 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1472, 1472,
- 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
- 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473,
-
- 1473, 1473, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
- 1474, 1474, 1474, 1474, 1475, 1475, 1475, 1475, 1475, 1475,
- 1475, 1475, 1475, 1475, 1475, 1475, 1476, 1476, 1476, 1476,
- 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1477, 1477,
- 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479,
+ 1470, 1470, 1470, 1470, 1470, 1471, 1471, 1471, 1471, 1471,
+
+ 1471, 1471, 1471, 1471, 1471, 1471, 1472, 1472, 1472, 1472,
+ 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1473, 1473, 1473,
+ 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1474, 1474,
+ 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1475,
+ 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475,
+ 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476,
+ 1476, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477,
+ 1477, 1477, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+ 1478, 1478, 1478, 1479, 1479, 1479, 1479, 1479, 1479, 1479,
1479, 1479, 1479, 1479, 1480, 1480, 1480, 1480, 1480, 1480,
- 1480, 1480, 1480, 1480, 1480, 1480, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1482, 1482,
-
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484,
- 1484, 1484, 1484, 1484, 1485, 1485, 1485, 1485, 1485, 1485,
- 1485, 1485, 1485, 1485, 1485, 1485, 1486, 1486, 1486, 1486,
- 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1487, 1487,
- 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487,
- 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488,
- 1488, 1488, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489,
- 1489, 1489, 1489, 1489, 1490, 1490, 1490, 1490, 1490, 1490,
- 1490, 1490, 1490, 1490, 1490, 1490, 1491, 1491, 1491, 1491,
- 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1492, 1492,
- 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492,
- 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493,
- 1493, 1493, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494,
- 1494, 1494, 1494, 1494, 1495, 1495, 1495, 1495, 1495, 1495,
- 1495, 1495, 1495, 1495, 1495, 1495, 1496, 1496, 1496, 1496,
- 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1497, 1497,
- 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497,
- 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498,
-
- 1498, 1498, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499,
+ 1480, 1480, 1480, 1480, 1480, 1481, 1481, 1481, 1481, 1481,
+ 1481, 1481, 1481, 1481, 1481, 1481, 1482, 1482, 1482, 1482,
+ 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1483, 1483, 1483,
+ 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1484, 1484,
+ 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1485,
+ 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485,
+ 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486,
+ 1486, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487,
+ 1487, 1487, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488,
+ 1488, 1488, 1488, 1489, 1489, 1489, 1489, 1489, 1489, 1489,
+
+ 1489, 1489, 1489, 1489, 1490, 1490, 1490, 1490, 1490, 1490,
+ 1490, 1490, 1490, 1490, 1490, 1491, 1491, 1491, 1491, 1491,
+ 1491, 1491, 1491, 1491, 1491, 1491, 1492, 1492, 1492, 1492,
+ 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1493, 1493, 1493,
+ 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1494, 1494,
+ 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1495,
+ 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495,
+ 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496,
+ 1496, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497,
+ 1497, 1497, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498,
+
+ 1498, 1498, 1498, 1499, 1499, 1499, 1499, 1499, 1499, 1499,
1499, 1499, 1499, 1499, 1500, 1500, 1500, 1500, 1500, 1500,
- 1500, 1500, 1500, 1500, 1500, 1500, 1501, 1501, 1501, 1501,
- 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1502, 1502,
- 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502,
- 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
- 1503, 1503, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1505, 1505, 1505, 1505, 1505, 1505,
- 1505, 1505, 1505, 1505, 1505, 1505, 1506, 1506, 1506, 1506,
- 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1507, 1507,
-
- 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
- 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
- 1508, 1508, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509,
+ 1500, 1500, 1500, 1500, 1500, 1501, 1501, 1501, 1501, 1501,
+ 1501, 1501, 1501, 1501, 1501, 1501, 1502, 1502, 1502, 1502,
+ 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1504, 1504,
+ 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1505,
+ 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+
+ 1507, 1507, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1509, 1509, 1509, 1509, 1509, 1509, 1509,
1509, 1509, 1509, 1509, 1510, 1510, 1510, 1510, 1510, 1510,
- 1510, 1510, 1510, 1510, 1510, 1510, 1511, 1511, 1511, 1511,
- 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1512, 1512,
- 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512,
- 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513,
- 1513, 1513, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514,
- 1514, 1514, 1514, 1514, 1515, 1515, 1515, 1515, 1515, 1515,
-
- 1515, 1515, 1515, 1515, 1515, 1515, 1516, 1516, 1516, 1516,
- 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1517, 1517,
- 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517,
- 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
- 1518, 1518, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
+ 1510, 1510, 1510, 1510, 1510, 1511, 1511, 1511, 1511, 1511,
+ 1511, 1511, 1511, 1511, 1511, 1511, 1512, 1512, 1512, 1512,
+ 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1513, 1513, 1513,
+ 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1514, 1514,
+ 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1515,
+ 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515,
+ 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516,
+
+ 1516, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517,
+ 1517, 1517, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
+ 1518, 1518, 1518, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
1519, 1519, 1519, 1519, 1520, 1520, 1520, 1520, 1520, 1520,
- 1520, 1520, 1520, 1520, 1520, 1520, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1522, 1522,
- 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522,
- 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523,
-
- 1523, 1523, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524,
- 1524, 1524, 1524, 1524, 1525, 1525, 1525, 1525, 1525, 1525,
- 1525, 1525, 1525, 1525, 1525, 1525, 1526, 1526, 1526, 1526,
- 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1527, 1527,
- 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527,
- 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528,
- 1528, 1528, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529,
+ 1520, 1520, 1520, 1520, 1520, 1521, 1521, 1521, 1521, 1521,
+ 1521, 1521, 1521, 1521, 1521, 1521, 1522, 1522, 1522, 1522,
+ 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1523, 1523, 1523,
+ 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1524, 1524,
+ 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1525,
+ 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525,
+
+ 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526,
+ 1526, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527,
+ 1527, 1527, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528,
+ 1528, 1528, 1528, 1529, 1529, 1529, 1529, 1529, 1529, 1529,
1529, 1529, 1529, 1529, 1530, 1530, 1530, 1530, 1530, 1530,
- 1530, 1530, 1530, 1530, 1530, 1530, 1531, 1531, 1531, 1531,
- 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1532, 1532,
-
- 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532,
- 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533,
- 1533, 1533, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534,
- 1534, 1534, 1534, 1534, 1535, 1535, 1535, 1535, 1535, 1535,
- 1535, 1535, 1535, 1535, 1535, 1535, 1536, 1536, 1536, 1536,
- 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1537, 1537,
- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537,
- 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538,
- 1538, 1538, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539,
+ 1530, 1530, 1530, 1530, 1530, 1531, 1531, 1531, 1531, 1531,
+ 1531, 1531, 1531, 1531, 1531, 1531, 1532, 1532, 1532, 1532,
+ 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1533, 1533, 1533,
+ 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1534, 1534,
+ 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1535,
+
+ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535,
+ 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536,
+ 1536, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537,
+ 1537, 1537, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538,
+ 1538, 1538, 1538, 1539, 1539, 1539, 1539, 1539, 1539, 1539,
1539, 1539, 1539, 1539, 1540, 1540, 1540, 1540, 1540, 1540,
-
- 1540, 1540, 1540, 1540, 1540, 1540, 1541, 1541, 1541, 1541,
- 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1542, 1542,
- 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
- 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
- 1543, 1543, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
- 1544, 1544, 1544, 1544, 1545, 1545, 1545, 1545, 1545, 1545,
- 1545, 1545, 1545, 1545, 1545, 1545, 1546, 1546, 1546, 1546,
- 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1547, 1547,
- 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
- 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548,
-
- 1548, 1548, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549,
+ 1540, 1540, 1540, 1540, 1540, 1541, 1541, 1541, 1541, 1541,
+ 1541, 1541, 1541, 1541, 1541, 1541, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1543, 1543, 1543,
+ 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1544, 1544,
+
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1545,
+ 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545,
+ 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546,
+ 1546, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
+ 1547, 1547, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548,
+ 1548, 1548, 1548, 1549, 1549, 1549, 1549, 1549, 1549, 1549,
1549, 1549, 1549, 1549, 1550, 1550, 1550, 1550, 1550, 1550,
- 1550, 1550, 1550, 1550, 1550, 1550, 1551, 1551, 1551, 1551,
- 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1552, 1552,
- 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552,
- 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553,
- 1553, 1553, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554,
- 1554, 1554, 1554, 1554, 1555, 1555, 1555, 1555, 1555, 1555,
- 1555, 1555, 1555, 1555, 1555, 1555, 1556, 1556, 1556, 1556,
- 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1557, 1557,
-
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559,
+ 1550, 1550, 1550, 1550, 1550, 1551, 1551, 1551, 1551, 1551,
+ 1551, 1551, 1551, 1551, 1551, 1551, 1552, 1552, 1552, 1552,
+ 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1553, 1553, 1553,
+
+ 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1554, 1554,
+ 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1555,
+ 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555,
+ 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556,
+ 1556, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
+ 1557, 1557, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
+ 1558, 1558, 1558, 1559, 1559, 1559, 1559, 1559, 1559, 1559,
1559, 1559, 1559, 1559, 1560, 1560, 1560, 1560, 1560, 1560,
- 1560, 1560, 1560, 1560, 1560, 1560, 1561, 1561, 1561, 1561,
- 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1562, 1562,
- 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562,
- 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563,
- 1563, 1563, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564,
- 1564, 1564, 1564, 1564, 1565, 1565, 1565, 1565, 1565, 1565,
-
- 1565, 1565, 1565, 1565, 1565, 1565, 1566, 1566, 1566, 1566,
- 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1567, 1567,
- 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567,
- 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568,
- 1568, 1568, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569,
+ 1560, 1560, 1560, 1560, 1560, 1561, 1561, 1561, 1561, 1561,
+ 1561, 1561, 1561, 1561, 1561, 1561, 1562, 1562, 1562, 1562,
+
+ 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1563, 1563, 1563,
+ 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1564, 1564,
+ 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1565,
+ 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565,
+ 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566,
+ 1566, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567,
+ 1567, 1567, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568,
+ 1568, 1568, 1568, 1569, 1569, 1569, 1569, 1569, 1569, 1569,
1569, 1569, 1569, 1569, 1570, 1570, 1570, 1570, 1570, 1570,
- 1570, 1570, 1570, 1570, 1570, 1570, 1571, 1571, 1571, 1571,
- 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1572, 1572,
- 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572,
- 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573,
-
- 1573, 1573, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574,
- 1574, 1574, 1574, 1574, 1575, 1575, 1575, 1575, 1575, 1575,
- 1575, 1575, 1575, 1575, 1575, 1575, 1576, 1576, 1576, 1576,
- 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1577, 1577,
- 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577,
- 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578,
- 1578, 1578, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579,
+ 1570, 1570, 1570, 1570, 1570, 1571, 1571, 1571, 1571, 1571,
+
+ 1571, 1571, 1571, 1571, 1571, 1571, 1572, 1572, 1572, 1572,
+ 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1573, 1573, 1573,
+ 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1574, 1574,
+ 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1575,
+ 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575,
+ 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576,
+ 1576, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577,
+ 1577, 1577, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578,
+ 1578, 1578, 1578, 1579, 1579, 1579, 1579, 1579, 1579, 1579,
1579, 1579, 1579, 1579, 1580, 1580, 1580, 1580, 1580, 1580,
- 1580, 1580, 1580, 1580, 1580, 1580, 1581, 1581, 1581, 1581,
- 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1582, 1582,
-
- 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582,
- 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583,
- 1583, 1583, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584,
- 1584, 1584, 1584, 1584, 1585, 1585, 1585, 1585, 1585, 1585,
- 1585, 1585, 1585, 1585, 1585, 1585, 1586, 1586, 1586, 1586,
- 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1587, 1587,
- 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587,
- 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588,
- 1588, 1588, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589,
- 1589, 1589, 1589, 1589, 1590, 1590, 1590, 1590, 1590, 1590,
- 1590, 1590, 1590, 1590, 1590, 1590, 1591, 1591, 1591, 1591,
- 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1592, 1592,
- 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
- 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
- 1593, 1593, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594,
- 1594, 1594, 1594, 1594, 1595, 1595, 1595, 1595, 1595, 1595,
- 1595, 1595, 1595, 1595, 1595, 1595, 1596, 1596, 1596, 1596,
- 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1597, 1597,
- 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597,
- 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
-
- 1598, 1598, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599,
+ 1580, 1580, 1580, 1580, 1580, 1581, 1581, 1581, 1581, 1581,
+ 1581, 1581, 1581, 1581, 1581, 1581, 1582, 1582, 1582, 1582,
+ 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1583, 1583, 1583,
+ 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1584, 1584,
+ 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1585,
+ 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585,
+ 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586,
+ 1586, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587,
+ 1587, 1587, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588,
+ 1588, 1588, 1588, 1589, 1589, 1589, 1589, 1589, 1589, 1589,
+
+ 1589, 1589, 1589, 1589, 1590, 1590, 1590, 1590, 1590, 1590,
+ 1590, 1590, 1590, 1590, 1590, 1591, 1591, 1591, 1591, 1591,
+ 1591, 1591, 1591, 1591, 1591, 1591, 1592, 1592, 1592, 1592,
+ 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1594, 1594,
+ 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1595,
+ 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595,
+ 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596,
+ 1596, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597,
+ 1597, 1597, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
+
+ 1598, 1598, 1598, 1599, 1599, 1599, 1599, 1599, 1599, 1599,
1599, 1599, 1599, 1599, 1600, 1600, 1600, 1600, 1600, 1600,
- 1600, 1600, 1600, 1600, 1600, 1600, 1601, 1601, 1601, 1601,
- 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1602, 1602,
- 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602,
- 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603,
- 1603, 1603, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604,
- 1604, 1604, 1604, 1604, 1605, 1605, 1605, 1605, 1605, 1605,
- 1605, 1605, 1605, 1605, 1605, 1605, 1606, 1606, 1606, 1606,
- 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1607, 1607,
-
- 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607,
- 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608,
- 1608, 1608, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609,
+ 1600, 1600, 1600, 1600, 1600, 1601, 1601, 1601, 1601, 1601,
+ 1601, 1601, 1601, 1601, 1601, 1601, 1602, 1602, 1602, 1602,
+ 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1603, 1603, 1603,
+ 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1604, 1604,
+ 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1605,
+ 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605,
+ 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606,
+ 1606, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607,
+
+ 1607, 1607, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608,
+ 1608, 1608, 1608, 1609, 1609, 1609, 1609, 1609, 1609, 1609,
1609, 1609, 1609, 1609, 1610, 1610, 1610, 1610, 1610, 1610,
- 1610, 1610, 1610, 1610, 1610, 1610, 1611, 1611, 1611, 1611,
- 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1612, 1612,
- 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612,
- 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
- 1613, 1613, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
- 1614, 1614, 1614, 1614, 1615, 1615, 1615, 1615, 1615, 1615,
-
- 1615, 1615, 1615, 1615, 1615, 1615, 1616, 1616, 1616, 1616,
- 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1617, 1617,
- 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617,
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619,
+ 1610, 1610, 1610, 1610, 1610, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1612, 1612, 1612, 1612,
+ 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1614, 1614,
+ 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1615,
+ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615,
+ 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616,
+
+ 1616, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617,
+ 1617, 1617, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
+ 1618, 1618, 1618, 1619, 1619, 1619, 1619, 1619, 1619, 1619,
1619, 1619, 1619, 1619, 1620, 1620, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1620, 1620, 1621, 1621, 1621, 1621,
- 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1622, 1622,
- 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
- 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623,
-
- 1623, 1623, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
- 1624, 1624, 1624, 1624, 1625, 1625, 1625, 1625, 1625, 1625,
- 1625, 1625, 1625, 1625, 1625, 1625, 1626, 1626, 1626, 1626,
- 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1627, 1627,
- 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
- 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628,
- 1628, 1628, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629,
+ 1620, 1620, 1620, 1620, 1620, 1621, 1621, 1621, 1621, 1621,
+ 1621, 1621, 1621, 1621, 1621, 1621, 1622, 1622, 1622, 1622,
+ 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1623, 1623, 1623,
+ 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1624, 1624,
+ 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1625,
+ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
+
+ 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626,
+ 1626, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
+ 1627, 1627, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628,
+ 1628, 1628, 1628, 1629, 1629, 1629, 1629, 1629, 1629, 1629,
1629, 1629, 1629, 1629, 1630, 1630, 1630, 1630, 1630, 1630,
- 1630, 1630, 1630, 1630, 1630, 1630, 1631, 1631, 1631, 1631,
- 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1632, 1632,
-
- 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632,
- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
- 1633, 1633, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634,
- 1634, 1634, 1634, 1634, 1635, 1635, 1635, 1635, 1635, 1635,
- 1635, 1635, 1635, 1635, 1635, 1635, 1636, 1636, 1636, 1636,
- 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1637, 1637,
- 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637,
- 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638,
- 1638, 1638, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639,
+ 1630, 1630, 1630, 1630, 1630, 1631, 1631, 1631, 1631, 1631,
+ 1631, 1631, 1631, 1631, 1631, 1631, 1632, 1632, 1632, 1632,
+ 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1633, 1633, 1633,
+ 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1634, 1634,
+ 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1635,
+
+ 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635,
+ 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636,
+ 1636, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637,
+ 1637, 1637, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638,
+ 1638, 1638, 1638, 1639, 1639, 1639, 1639, 1639, 1639, 1639,
1639, 1639, 1639, 1639, 1640, 1640, 1640, 1640, 1640, 1640,
-
- 1640, 1640, 1640, 1640, 1640, 1640, 1641, 1641, 1641, 1641,
- 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1642, 1642,
- 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642,
- 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
- 1643, 1643, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644,
- 1644, 1644, 1644, 1644, 1645, 1645, 1645, 1645, 1645, 1645,
- 1645, 1645, 1645, 1645, 1645, 1645, 1646, 1646, 1646, 1646,
- 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1647, 1647,
- 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647,
- 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-
- 1648, 1648, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649,
+ 1640, 1640, 1640, 1640, 1640, 1641, 1641, 1641, 1641, 1641,
+ 1641, 1641, 1641, 1641, 1641, 1641, 1642, 1642, 1642, 1642,
+ 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1643, 1643, 1643,
+ 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1644, 1644,
+
+ 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1645,
+ 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645,
+ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646,
+ 1646, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647,
+ 1647, 1647, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
+ 1648, 1648, 1648, 1649, 1649, 1649, 1649, 1649, 1649, 1649,
1649, 1649, 1649, 1649, 1650, 1650, 1650, 1650, 1650, 1650,
- 1650, 1650, 1650, 1650, 1650, 1650, 1651, 1651, 1651, 1651,
- 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1652, 1652,
- 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652,
- 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653,
- 1653, 1653, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
- 1654, 1654, 1654, 1654, 1655, 1655, 1655, 1655, 1655, 1655,
- 1655, 1655, 1655, 1655, 1655, 1655, 1656, 1656, 1656, 1656,
- 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1657, 1657,
-
- 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657,
- 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658,
- 1658, 1658, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659,
+ 1650, 1650, 1650, 1650, 1650, 1651, 1651, 1651, 1651, 1651,
+ 1651, 1651, 1651, 1651, 1651, 1651, 1652, 1652, 1652, 1652,
+ 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1653, 1653, 1653,
+
+ 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1654, 1654,
+ 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1655,
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+ 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656,
+ 1656, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657,
+ 1657, 1657, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658,
+ 1658, 1658, 1658, 1659, 1659, 1659, 1659, 1659, 1659, 1659,
1659, 1659, 1659, 1659, 1660, 1660, 1660, 1660, 1660, 1660,
- 1660, 1660, 1660, 1660, 1660, 1660, 1661, 1661, 1661, 1661,
- 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1662, 1662,
- 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662,
- 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663,
- 1663, 1663, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664,
- 1664, 1664, 1664, 1664, 1665, 1665, 1665, 1665, 1665, 1665,
-
- 1665, 1665, 1665, 1665, 1665, 1665, 1666, 1666, 1666, 1666,
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1667, 1667,
- 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667,
- 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668,
- 1668, 1668, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
+ 1660, 1660, 1660, 1660, 1660, 1661, 1661, 1661, 1661, 1661,
+ 1661, 1661, 1661, 1661, 1661, 1661, 1662, 1662, 1662, 1662,
+
+ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1663, 1663, 1663,
+ 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1664, 1664,
+ 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1665,
+ 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665,
+ 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
+ 1666, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667,
+ 1667, 1667, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668,
+ 1668, 1668, 1668, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
1669, 1669, 1669, 1669, 1670, 1670, 1670, 1670, 1670, 1670,
- 1670, 1670, 1670, 1670, 1670, 1670, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1672, 1672,
- 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672,
- 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673,
-
- 1673, 1673, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674,
- 1674, 1674, 1674, 1674, 1675, 1675, 1675, 1675, 1675, 1675,
- 1675, 1675, 1675, 1675, 1675, 1675, 1676, 1676, 1676, 1676,
- 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1677, 1677,
- 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677,
- 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678,
- 1678, 1678, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679,
+ 1670, 1670, 1670, 1670, 1670, 1671, 1671, 1671, 1671, 1671,
+
+ 1671, 1671, 1671, 1671, 1671, 1671, 1672, 1672, 1672, 1672,
+ 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1673, 1673, 1673,
+ 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1674, 1674,
+ 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1675,
+ 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675,
+ 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676,
+ 1676, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677,
+ 1677, 1677, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678,
+ 1678, 1678, 1678, 1679, 1679, 1679, 1679, 1679, 1679, 1679,
1679, 1679, 1679, 1679, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1681, 1681, 1681, 1681,
- 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1682, 1682,
-
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
- 1683, 1683, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
- 1684, 1684, 1684, 1684, 1685, 1685, 1685, 1685, 1685, 1685,
- 1685, 1685, 1685, 1685, 1685, 1685, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1687, 1687,
- 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1690, 1690, 1690, 1690, 1690, 1690,
- 1690, 1690, 1690, 1690, 1690, 1690, 1691, 1691, 1691, 1691,
- 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1692, 1692,
- 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692,
- 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693,
- 1693, 1693, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694,
- 1694, 1694, 1694, 1694, 1695, 1695, 1695, 1695, 1695, 1695,
- 1695, 1695, 1695, 1695, 1695, 1695, 1696, 1696, 1696, 1696,
- 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1697, 1697,
- 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697,
- 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
-
- 1698, 1698, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699,
+ 1680, 1680, 1680, 1680, 1680, 1681, 1681, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 1681, 1681, 1682, 1682, 1682, 1682,
+ 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1684, 1684,
+ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1685,
+ 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685,
+ 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
+ 1686, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687,
+ 1687, 1687, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
+ 1688, 1688, 1688, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
+
+ 1689, 1689, 1689, 1689, 1690, 1690, 1690, 1690, 1690, 1690,
+ 1690, 1690, 1690, 1690, 1690, 1691, 1691, 1691, 1691, 1691,
+ 1691, 1691, 1691, 1691, 1691, 1691, 1692, 1692, 1692, 1692,
+ 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1693, 1693, 1693,
+ 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1694, 1694,
+ 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1695,
+ 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695,
+ 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696,
+ 1696, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697,
+ 1697, 1697, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
+
+ 1698, 1698, 1698, 1699, 1699, 1699, 1699, 1699, 1699, 1699,
1699, 1699, 1699, 1699, 1700, 1700, 1700, 1700, 1700, 1700,
- 1700, 1700, 1700, 1700, 1700, 1700, 1701, 1701, 1701, 1701,
- 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1702, 1702,
- 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702,
- 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
- 1703, 1703, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
- 1704, 1704, 1704, 1704, 1705, 1705, 1705, 1705, 1705, 1705,
- 1705, 1705, 1705, 1705, 1705, 1705, 1706, 1706, 1706, 1706,
- 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1707, 1707,
-
- 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707,
- 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708,
- 1708, 1708, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709,
+ 1700, 1700, 1700, 1700, 1700, 1701, 1701, 1701, 1701, 1701,
+ 1701, 1701, 1701, 1701, 1701, 1701, 1702, 1702, 1702, 1702,
+ 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1704, 1704,
+ 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1705,
+ 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705,
+ 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
+ 1706, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707,
+
+ 1707, 1707, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708,
+ 1708, 1708, 1708, 1709, 1709, 1709, 1709, 1709, 1709, 1709,
1709, 1709, 1709, 1709, 1710, 1710, 1710, 1710, 1710, 1710,
- 1710, 1710, 1710, 1710, 1710, 1710, 1711, 1711, 1711, 1711,
- 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1712, 1712,
- 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712,
- 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713,
- 1713, 1713, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
- 1714, 1714, 1714, 1714, 1715, 1715, 1715, 1715, 1715, 1715,
-
- 1715, 1715, 1715, 1715, 1715, 1715, 1716, 1716, 1716, 1716,
- 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1717, 1717,
- 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
- 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718,
- 1718, 1718, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719,
+ 1710, 1710, 1710, 1710, 1710, 1711, 1711, 1711, 1711, 1711,
+ 1711, 1711, 1711, 1711, 1711, 1711, 1712, 1712, 1712, 1712,
+ 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1713, 1713, 1713,
+ 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1715,
+ 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715,
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+
+ 1716, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718,
+ 1718, 1718, 1718, 1719, 1719, 1719, 1719, 1719, 1719, 1719,
1719, 1719, 1719, 1719, 1720, 1720, 1720, 1720, 1720, 1720,
- 1720, 1720, 1720, 1720, 1720, 1720, 1721, 1721, 1721, 1721,
- 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1722, 1722,
- 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722,
- 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
-
- 1723, 1723, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
- 1724, 1724, 1724, 1724, 1725, 1725, 1725, 1725, 1725, 1725,
- 1725, 1725, 1725, 1725, 1725, 1725, 1726, 1726, 1726, 1726,
- 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1727, 1727,
- 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727,
- 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728,
- 1728, 1728, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729,
+ 1720, 1720, 1720, 1720, 1720, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1722, 1722, 1722, 1722,
+ 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1725,
+ 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725,
+
+ 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726,
+ 1726, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727,
+ 1727, 1727, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728,
+ 1728, 1728, 1728, 1729, 1729, 1729, 1729, 1729, 1729, 1729,
1729, 1729, 1729, 1729, 1730, 1730, 1730, 1730, 1730, 1730,
- 1730, 1730, 1730, 1730, 1730, 1730, 1731, 1731, 1731, 1731,
- 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1732, 1732,
-
- 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732,
- 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733,
- 1733, 1733, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734,
- 1734, 1734, 1734, 1734, 1735, 1735, 1735, 1735, 1735, 1735,
- 1735, 1735, 1735, 1735, 1735, 1735, 1736, 1736, 1736, 1736,
- 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1737, 1737,
- 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737,
- 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738,
- 1738, 1738, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739,
+ 1730, 1730, 1730, 1730, 1730, 1731, 1731, 1731, 1731, 1731,
+ 1731, 1731, 1731, 1731, 1731, 1731, 1732, 1732, 1732, 1732,
+ 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1733, 1733, 1733,
+ 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1734, 1734,
+ 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1735,
+
+ 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735,
+ 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736,
+ 1736, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737,
+ 1737, 1737, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738,
+ 1738, 1738, 1738, 1739, 1739, 1739, 1739, 1739, 1739, 1739,
1739, 1739, 1739, 1739, 1740, 1740, 1740, 1740, 1740, 1740,
-
- 1740, 1740, 1740, 1740, 1740, 1740, 1741, 1741, 1741, 1741,
- 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1742, 1742,
- 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
- 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743,
- 1743, 1743, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744,
- 1744, 1744, 1744, 1744, 1745, 1745, 1745, 1745, 1745, 1745,
- 1745, 1745, 1745, 1745, 1745, 1745, 1746, 1746, 1746, 1746,
- 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1747, 1747,
- 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747,
- 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748,
-
- 1748, 1748, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749,
+ 1740, 1740, 1740, 1740, 1740, 1741, 1741, 1741, 1741, 1741,
+ 1741, 1741, 1741, 1741, 1741, 1741, 1742, 1742, 1742, 1742,
+ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1743, 1743, 1743,
+ 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1744, 1744,
+
+ 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1745,
+ 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745,
+ 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746,
+ 1746, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747,
+ 1747, 1747, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748,
+ 1748, 1748, 1748, 1749, 1749, 1749, 1749, 1749, 1749, 1749,
1749, 1749, 1749, 1749, 1750, 1750, 1750, 1750, 1750, 1750,
- 1750, 1750, 1750, 1750, 1750, 1750, 1751, 1751, 1751, 1751,
- 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1752, 1752,
- 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752,
- 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753,
- 1753, 1753, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754,
- 1754, 1754, 1754, 1754, 1755, 1755, 1755, 1755, 1755, 1755,
- 1755, 1755, 1755, 1755, 1755, 1755, 1756, 1756, 1756, 1756,
- 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1757, 1757,
-
- 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757,
- 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758,
- 1758, 1758, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
+ 1750, 1750, 1750, 1750, 1750, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1752, 1752, 1752, 1752,
+ 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1753, 1753, 1753,
+
+ 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1754, 1754,
+ 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1755,
+ 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755,
+ 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
+ 1756, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757,
+ 1757, 1757, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758,
+ 1758, 1758, 1758, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
1759, 1759, 1759, 1759, 1760, 1760, 1760, 1760, 1760, 1760,
- 1760, 1760, 1760, 1760, 1760, 1760, 1761, 1761, 1761, 1761,
- 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1762, 1762,
- 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762,
- 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763,
- 1763, 1763, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764,
- 1764, 1764, 1764, 1764, 1765, 1765, 1765, 1765, 1765, 1765,
-
- 1765, 1765, 1765, 1765, 1765, 1765, 1766, 1766, 1766, 1766,
- 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1767, 1767,
- 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767,
- 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768,
- 1768, 1768, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769,
+ 1760, 1760, 1760, 1760, 1760, 1761, 1761, 1761, 1761, 1761,
+ 1761, 1761, 1761, 1761, 1761, 1761, 1762, 1762, 1762, 1762,
+
+ 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1763, 1763, 1763,
+ 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1764, 1764,
+ 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1765,
+ 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765,
+ 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766,
+ 1766, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767,
+ 1767, 1767, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768,
+ 1768, 1768, 1768, 1769, 1769, 1769, 1769, 1769, 1769, 1769,
1769, 1769, 1769, 1769, 1770, 1770, 1770, 1770, 1770, 1770,
- 1770, 1770, 1770, 1770, 1770, 1770, 1771, 1771, 1771, 1771,
- 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1772, 1772,
- 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772,
- 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773,
-
- 1773, 1773, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774,
- 1774, 1774, 1774, 1774, 1775, 1775, 1775, 1775, 1775, 1775,
- 1775, 1775, 1775, 1775, 1775, 1775, 1776, 1776, 1776, 1776,
- 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1777, 1777,
- 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
- 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778,
- 1778, 1778, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779,
+ 1770, 1770, 1770, 1770, 1770, 1771, 1771, 1771, 1771, 1771,
+
+ 1771, 1771, 1771, 1771, 1771, 1771, 1772, 1772, 1772, 1772,
+ 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1773, 1773, 1773,
+ 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1774, 1774,
+ 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1775,
+ 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775,
+ 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776,
+ 1776, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+ 1777, 1777, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778,
+ 1778, 1778, 1778, 1779, 1779, 1779, 1779, 1779, 1779, 1779,
1779, 1779, 1779, 1779, 1780, 1780, 1780, 1780, 1780, 1780,
- 1780, 1780, 1780, 1780, 1780, 1780, 1781, 1781, 1781, 1781,
- 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1782, 1782,
-
- 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782,
- 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783,
- 1783, 1783, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784,
- 1784, 1784, 1784, 1784, 1785, 1785, 1785, 1785, 1785, 1785,
- 1785, 1785, 1785, 1785, 1785, 1785, 1786, 1786, 1786, 1786,
- 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1787, 1787,
- 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787,
- 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788,
- 1788, 1788, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789,
- 1789, 1789, 1789, 1789, 1790, 1790, 1790, 1790, 1790, 1790,
- 1790, 1790, 1790, 1790, 1790, 1790, 1791, 1791, 1791, 1791,
- 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1792, 1792,
- 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792,
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
- 1793, 1793, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794,
- 1794, 1794, 1794, 1794, 1795, 1795, 1795, 1795, 1795, 1795,
- 1795, 1795, 1795, 1795, 1795, 1795, 1796, 1796, 1796, 1796,
- 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1797, 1797,
- 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797,
- 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798,
-
- 1798, 1798, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799,
+ 1780, 1780, 1780, 1780, 1780, 1781, 1781, 1781, 1781, 1781,
+ 1781, 1781, 1781, 1781, 1781, 1781, 1782, 1782, 1782, 1782,
+ 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1783, 1783, 1783,
+ 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1784, 1784,
+ 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1785,
+ 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785,
+ 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786,
+ 1786, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787,
+ 1787, 1787, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788,
+ 1788, 1788, 1788, 1789, 1789, 1789, 1789, 1789, 1789, 1789,
+
+ 1789, 1789, 1789, 1789, 1790, 1790, 1790, 1790, 1790, 1790,
+ 1790, 1790, 1790, 1790, 1790, 1791, 1791, 1791, 1791, 1791,
+ 1791, 1791, 1791, 1791, 1791, 1791, 1792, 1792, 1792, 1792,
+ 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1793, 1793, 1793,
+ 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1794, 1794,
+ 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1795,
+ 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795,
+ 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796,
+ 1796, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797,
+ 1797, 1797, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798,
+
+ 1798, 1798, 1798, 1799, 1799, 1799, 1799, 1799, 1799, 1799,
1799, 1799, 1799, 1799, 1800, 1800, 1800, 1800, 1800, 1800,
- 1800, 1800, 1800, 1800, 1800, 1800, 1801, 1801, 1801, 1801,
- 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1802, 1802,
- 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802,
- 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803,
- 1803, 1803, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804,
- 1804, 1804, 1804, 1804, 1805, 1805, 1805, 1805, 1805, 1805,
- 1805, 1805, 1805, 1805, 1805, 1805, 1806, 1806, 1806, 1806,
- 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1807, 1807,
-
- 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807,
- 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808,
- 1808, 1808, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
+ 1800, 1800, 1800, 1800, 1800, 1801, 1801, 1801, 1801, 1801,
+ 1801, 1801, 1801, 1801, 1801, 1801, 1802, 1802, 1802, 1802,
+ 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1803, 1803, 1803,
+ 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1804, 1804,
+ 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1805,
+ 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
+ 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806,
+ 1806, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807,
+
+ 1807, 1807, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808,
+ 1808, 1808, 1808, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
1809, 1809, 1809, 1809, 1810, 1810, 1810, 1810, 1810, 1810,
- 1810, 1810, 1810, 1810, 1810, 1810, 1811, 1811, 1811, 1811,
- 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1812, 1812,
- 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
- 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813,
- 1813, 1813, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
- 1814, 1814, 1814, 1814, 1815, 1815, 1815, 1815, 1815, 1815,
-
- 1815, 1815, 1815, 1815, 1815, 1815, 1816, 1816, 1816, 1816,
- 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1817, 1817,
- 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817,
- 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818,
- 1818, 1818, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
+ 1810, 1810, 1810, 1810, 1810, 1811, 1811, 1811, 1811, 1811,
+ 1811, 1811, 1811, 1811, 1811, 1811, 1812, 1812, 1812, 1812,
+ 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1813, 1813, 1813,
+ 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1814, 1814,
+ 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1815,
+ 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
+ 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816,
+
+ 1816, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817,
+ 1817, 1817, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818,
+ 1818, 1818, 1818, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
1819, 1819, 1819, 1819, 1820, 1820, 1820, 1820, 1820, 1820,
- 1820, 1820, 1820, 1820, 1820, 1820, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823,
-
- 1823, 1823, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824,
- 1824, 1824, 1824, 1824, 1825, 1825, 1825, 1825, 1825, 1825,
- 1825, 1825, 1825, 1825, 1825, 1825, 1826, 1826, 1826, 1826,
- 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1827, 1827,
- 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
- 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828,
- 1828, 1828, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829,
- 1829, 1829, 1829, 1829, 433, 432, 430, 429, 427, 426,
- 425, 424, 417, 416, 415, 414, 413, 412, 411, 409,
- 407, 406, 405, 403, 402, 399, 398, 396, 395, 392,
-
- 389, 388, 387, 386, 385, 384, 383, 382, 381, 380,
- 379, 377, 376, 375, 374, 373, 372, 371, 370, 369,
- 368, 365, 364, 363, 362, 361, 360, 359, 357, 356,
- 355, 354, 353, 352, 351, 349, 348, 347, 346, 345,
- 344, 343, 342, 341, 339, 338, 336, 335, 334, 333,
- 331, 330, 329, 328, 327, 326, 324, 319, 316, 314,
- 313, 312, 311, 310, 309, 308, 305, 304, 303, 302,
- 301, 300, 299, 298, 297, 296, 295, 294, 293, 291,
- 290, 289, 287, 286, 284, 283, 282, 281, 280, 279,
- 277, 276, 275, 274, 272, 271, 266, 265, 259, 258,
-
- 257, 256, 255, 254, 253, 252, 251, 250, 246, 245,
- 242, 231, 226, 223, 222, 220, 205, 204, 203, 202,
- 201, 200, 199, 198, 197, 195, 192, 191, 190, 188,
- 186, 185, 184, 183, 181, 180, 179, 178, 177, 175,
- 173, 170, 168, 167, 166, 161, 158, 154, 146, 137,
- 136, 135, 134, 133, 132, 131, 130, 129, 127, 116,
- 114, 112, 111, 109, 108, 106, 105, 102, 101, 89,
- 86, 85, 84, 78, 71, 70, 69, 65, 63, 62,
- 61, 58, 53, 50, 49, 48, 44, 37, 28, 24,
- 23, 20, 19, 18, 17, 2, 1, 1409, 1409, 1409,
-
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409,
- 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409
+ 1820, 1820, 1820, 1820, 1820, 1821, 1821, 1821, 1821, 1821,
+ 1821, 1821, 1821, 1821, 1821, 1821, 1822, 1822, 1822, 1822,
+ 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1823, 1823, 1823,
+ 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1824, 1824,
+ 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1825,
+ 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825,
+
+ 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+ 1826, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
+ 1827, 1827, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828,
+ 1828, 1828, 1828, 1829, 1829, 1829, 1829, 1829, 1829, 1829,
+ 1829, 1829, 1829, 1829, 1830, 1830, 1830, 1830, 1830, 1830,
+ 1830, 1830, 1830, 1830, 1830, 328, 327, 325, 320, 317,
+ 315, 314, 313, 312, 311, 310, 309, 306, 305, 304,
+ 303, 302, 301, 300, 299, 298, 297, 296, 295, 294,
+ 292, 291, 290, 288, 287, 285, 284, 283, 282, 281,
+ 280, 278, 277, 276, 275, 273, 272, 267, 266, 260,
+
+ 259, 258, 257, 256, 255, 254, 253, 252, 251, 247,
+ 246, 243, 231, 226, 223, 222, 220, 205, 204, 203,
+ 202, 201, 200, 199, 198, 197, 195, 192, 191, 190,
+ 188, 186, 185, 184, 183, 181, 180, 179, 178, 177,
+ 175, 173, 170, 168, 167, 166, 161, 158, 154, 146,
+ 137, 136, 135, 134, 133, 132, 131, 130, 129, 127,
+ 116, 114, 112, 111, 109, 108, 106, 105, 102, 101,
+ 89, 86, 85, 84, 78, 71, 70, 69, 65, 63,
+ 62, 61, 58, 53, 50, 49, 48, 44, 37, 28,
+ 24, 23, 20, 19, 18, 17, 2, 1, 1410, 1410,
+
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410,
+ 1410
} ;
static yy_state_type yy_last_accepting_state;
@@ -2770,7 +2684,7 @@ char *yytext;
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -2785,7 +2699,7 @@ char *yytext;
+----------------------------------------------------------------------+
*/
-/* $Id: zend_language_scanner.l,v 1.131.2.6 2005/11/27 06:39:28 iliaa Exp $ */
+/* $Id: zend_language_scanner.l,v 1.131.2.9 2006/01/04 23:53:04 andi Exp $ */
#define yyleng SCNG(yy_leng)
#define yytext SCNG(yy_text)
@@ -3799,13 +3713,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 1410 )
+ if ( yy_current_state >= 1411 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp;
}
- while ( yy_base[yy_current_state] != 7998 );
+ while ( yy_base[yy_current_state] != 7599 );
yy_find_action:
yy_act = yy_accept[yy_current_state];
@@ -4728,16 +4642,21 @@ YY_RULE_SETUP
case 122:
YY_RULE_SETUP
{
- yymore();
-}
- YY_BREAK
-case YY_STATE_EOF(ST_ONE_LINE_COMMENT):
-{
- zendlval->value.str.val = yytext; /* no copying - intentional */
- zendlval->value.str.len = yyleng;
- zendlval->type = IS_STRING;
- BEGIN(INITIAL);
- return EOF;
+ switch (yytext[yyleng-1]) {
+ case '?': case '%': case '>':
+ yyless(yyleng-1);
+ yymore();
+ break;
+ case '\n':
+ CG(zend_lineno)++;
+ /* intentional fall through */
+ default:
+ zendlval->value.str.val = yytext; /* no copying - intentional */
+ zendlval->value.str.len = yyleng;
+ zendlval->type = IS_STRING;
+ BEGIN(ST_IN_SCRIPTING);
+ return T_COMMENT;
+ }
}
YY_BREAK
case 123:
@@ -5019,7 +4938,6 @@ case 139:
YY_RULE_SETUP
{
int label_len;
- unsigned char unput_semicolon;
CG(zend_lineno)++;
if (yytext[yyleng-2]=='\r') {
@@ -5030,17 +4948,12 @@ YY_RULE_SETUP
if (yytext[label_len-1]==';') {
label_len--;
- unput_semicolon=1;
- } else{
- unput_semicolon=0;
}
if (label_len==CG(heredoc_len) && !memcmp(yytext, CG(heredoc), label_len)) {
zendlval->value.str.val = estrndup(yytext, label_len); /* unput destroys yytext */
zendlval->value.str.len = label_len;
- if (unput_semicolon) {
- unput(';');
- }
+ yyless(yyleng - (yyleng - label_len));
efree(CG(heredoc));
CG(heredoc)=NULL;
CG(heredoc_len)=0;
@@ -5253,6 +5166,7 @@ ECHO;
case YY_STATE_EOF(ST_SINGLE_QUOTE):
case YY_STATE_EOF(ST_HEREDOC):
case YY_STATE_EOF(ST_LOOKING_FOR_VARNAME):
+case YY_STATE_EOF(ST_ONE_LINE_COMMENT):
yyterminate();
case YY_END_OF_BUFFER:
@@ -5543,7 +5457,7 @@ static yy_state_type yy_get_previous_state(TSRMLS_D)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 1410 )
+ if ( yy_current_state >= 1411 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -5581,11 +5495,11 @@ void ***tsrm_ls;
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 1410 )
+ if ( yy_current_state >= 1411 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- yy_is_jam = (yy_current_state == 1409);
+ yy_is_jam = (yy_current_state == 1410);
return yy_is_jam ? 0 : yy_current_state;
}
diff --git a/Zend/zend_language_scanner.h b/Zend/zend_language_scanner.h
index 23442e2db..2e1159497 100644
--- a/Zend/zend_language_scanner.h
+++ b/Zend/zend_language_scanner.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_language_scanner.h,v 1.19 2005/08/03 13:30:54 sniper Exp $ */
+/* $Id: zend_language_scanner.h,v 1.19.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_SCANNER_H
#define ZEND_SCANNER_H
diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l
index 564677712..d9c54ffd1 100644
--- a/Zend/zend_language_scanner.l
+++ b/Zend/zend_language_scanner.l
@@ -4,7 +4,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_language_scanner.l,v 1.131.2.6 2005/11/27 06:39:28 iliaa Exp $ */
+/* $Id: zend_language_scanner.l,v 1.131.2.9 2006/01/04 23:53:04 andi Exp $ */
#define yyleng SCNG(yy_leng)
#define yytext SCNG(yy_text)
@@ -1461,16 +1461,22 @@ NEWLINE ("\r"|"\n"|"\r\n")
yymore();
}
-<ST_ONE_LINE_COMMENT>[^\n\r?%>]+ {
- yymore();
-}
-
-<ST_ONE_LINE_COMMENT><<EOF>> {
- zendlval->value.str.val = yytext; /* no copying - intentional */
- zendlval->value.str.len = yyleng;
- zendlval->type = IS_STRING;
- BEGIN(INITIAL);
- return EOF;
+<ST_ONE_LINE_COMMENT>[^\n\r?%>]+{ANY_CHAR} {
+ switch (yytext[yyleng-1]) {
+ case '?': case '%': case '>':
+ yyless(yyleng-1);
+ yymore();
+ break;
+ case '\n':
+ CG(zend_lineno)++;
+ /* intentional fall through */
+ default:
+ zendlval->value.str.val = yytext; /* no copying - intentional */
+ zendlval->value.str.len = yyleng;
+ zendlval->type = IS_STRING;
+ BEGIN(ST_IN_SCRIPTING);
+ return T_COMMENT;
+ }
}
<ST_ONE_LINE_COMMENT>{NEWLINE} {
@@ -1727,7 +1733,6 @@ NEWLINE ("\r"|"\n"|"\r\n")
<ST_HEREDOC>^{LABEL}(";")?{NEWLINE} {
int label_len;
- unsigned char unput_semicolon;
CG(zend_lineno)++;
if (yytext[yyleng-2]=='\r') {
@@ -1738,17 +1743,12 @@ NEWLINE ("\r"|"\n"|"\r\n")
if (yytext[label_len-1]==';') {
label_len--;
- unput_semicolon=1;
- } else{
- unput_semicolon=0;
}
if (label_len==CG(heredoc_len) && !memcmp(yytext, CG(heredoc), label_len)) {
zendlval->value.str.val = estrndup(yytext, label_len); /* unput destroys yytext */
zendlval->value.str.len = label_len;
- if (unput_semicolon) {
- unput(';');
- }
+ yyless(yyleng - (yyleng - label_len));
efree(CG(heredoc));
CG(heredoc)=NULL;
CG(heredoc_len)=0;
diff --git a/Zend/zend_list.c b/Zend/zend_list.c
index d0e7a46d0..d247551c8 100644
--- a/Zend/zend_list.c
+++ b/Zend/zend_list.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_list.c,v 1.66 2005/08/03 13:30:55 sniper Exp $ */
+/* $Id: zend_list.c,v 1.66.2.1 2006/01/04 23:53:04 andi Exp $ */
/* resource lists */
diff --git a/Zend/zend_list.h b/Zend/zend_list.h
index edb2a4791..b44c518dd 100644
--- a/Zend/zend_list.h
+++ b/Zend/zend_list.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_list.h,v 1.48 2005/08/03 13:30:55 sniper Exp $ */
+/* $Id: zend_list.h,v 1.48.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_LIST_H
#define ZEND_LIST_H
diff --git a/Zend/zend_llist.c b/Zend/zend_llist.c
index f21797078..6991c0eb0 100644
--- a/Zend/zend_llist.c
+++ b/Zend/zend_llist.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_llist.c,v 1.35 2005/08/03 13:30:55 sniper Exp $ */
+/* $Id: zend_llist.c,v 1.35.2.1 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
#include "zend_llist.h"
diff --git a/Zend/zend_llist.h b/Zend/zend_llist.h
index b5150ae32..b6addc9e4 100644
--- a/Zend/zend_llist.h
+++ b/Zend/zend_llist.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_llist.h,v 1.33 2005/08/03 13:30:55 sniper Exp $ */
+/* $Id: zend_llist.h,v 1.33.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_LLIST_H
#define ZEND_LLIST_H
diff --git a/Zend/zend_mm.c b/Zend/zend_mm.c
index 31f9138e9..532e863ea 100644
--- a/Zend/zend_mm.c
+++ b/Zend/zend_mm.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_mm.c,v 1.31 2005/08/03 13:30:55 sniper Exp $ */
+/* $Id: zend_mm.c,v 1.31.2.1 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
#include "zend_mm.h"
diff --git a/Zend/zend_mm.h b/Zend/zend_mm.h
index aec607e71..9a09c278b 100644
--- a/Zend/zend_mm.h
+++ b/Zend/zend_mm.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_mm.h,v 1.19 2005/08/03 13:30:55 sniper Exp $ */
+/* $Id: zend_mm.h,v 1.19.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef _ZEND_MM_H
#define _ZEND_MM_H
diff --git a/Zend/zend_modules.h b/Zend/zend_modules.h
index 19d78019e..c8f4ed9ff 100644
--- a/Zend/zend_modules.h
+++ b/Zend/zend_modules.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_modules.h,v 1.67.2.1 2005/09/22 19:13:32 tony2001 Exp $ */
+/* $Id: zend_modules.h,v 1.67.2.2 2006/01/04 23:53:04 andi Exp $ */
#ifndef MODULES_H
#define MODULES_H
diff --git a/Zend/zend_multibyte.c b/Zend/zend_multibyte.c
index 50de6d553..c3833322b 100644
--- a/Zend/zend_multibyte.c
+++ b/Zend/zend_multibyte.c
@@ -2,11 +2,11 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
- | available at through the world-wide-web at |
+ | available through the world-wide-web at |
| http://www.zend.com/license/2_00.txt. |
| If you did not receive a copy of the Zend license and are unable to |
| obtain it through the world-wide-web, please send a note to |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_multibyte.c,v 1.4.2.1 2005/11/15 13:29:29 dmitry Exp $ */
+/* $Id: zend_multibyte.c,v 1.4.2.4 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
#include "zend_compile.h"
diff --git a/Zend/zend_multibyte.h b/Zend/zend_multibyte.h
index 0ef16b7be..319a6f088 100644
--- a/Zend/zend_multibyte.h
+++ b/Zend/zend_multibyte.h
@@ -2,11 +2,11 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
- | available at through the world-wide-web at |
+ | available through the world-wide-web at |
| http://www.zend.com/license/2_00.txt. |
| If you did not receive a copy of the Zend license and are unable to |
| obtain it through the world-wide-web, please send a note to |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_multibyte.h,v 1.3 2005/08/03 13:30:55 sniper Exp $ */
+/* $Id: zend_multibyte.h,v 1.3.2.3 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_MULTIBYTE_H
#define ZEND_MULTIBYTE_H
diff --git a/Zend/zend_multiply.h b/Zend/zend_multiply.h
index 439859942..6bae3c70a 100644
--- a/Zend/zend_multiply.h
+++ b/Zend/zend_multiply.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_multiply.h,v 1.10 2005/08/03 13:30:55 sniper Exp $ */
+/* $Id: zend_multiply.h,v 1.10.2.1 2006/01/04 23:53:04 andi Exp $ */
#if defined(__i386__) && defined(__GNUC__)
diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c
index f5dd81f56..564d1051d 100644
--- a/Zend/zend_object_handlers.c
+++ b/Zend/zend_object_handlers.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_object_handlers.c,v 1.135.2.4 2005/11/16 11:52:27 dmitry Exp $ */
+/* $Id: zend_object_handlers.c,v 1.135.2.6 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
#include "zend_globals.h"
@@ -857,7 +857,7 @@ ZEND_API zval **zend_std_get_static_property(zend_class_entry *ce, char *propert
zend_update_class_constants(tmp_ce TSRMLS_CC);
- zend_hash_quick_find(tmp_ce->static_members, property_info->name, property_info->name_length+1, property_info->h, (void **) &retval);
+ zend_hash_quick_find(CE_STATIC_MEMBERS(tmp_ce), property_info->name, property_info->name_length+1, property_info->h, (void **) &retval);
if (!retval) {
if (silent) {
diff --git a/Zend/zend_object_handlers.h b/Zend/zend_object_handlers.h
index f7cdcdee7..2f18bd7ae 100644
--- a/Zend/zend_object_handlers.h
+++ b/Zend/zend_object_handlers.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_object_handlers.h,v 1.47 2005/08/03 13:30:55 sniper Exp $ */
+/* $Id: zend_object_handlers.h,v 1.47.2.2 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_OBJECT_HANDLERS_H
#define ZEND_OBJECT_HANDLERS_H
@@ -103,7 +103,7 @@ typedef int (*zend_object_cast_t)(zval *readobj, zval *writeobj, int type, int s
* Returns FAILURE if the object does not have any sense of overloaded dimensions */
typedef int (*zend_object_count_elements_t)(zval *object, long *count TSRMLS_DC);
-typedef struct _zend_object_handlers {
+struct _zend_object_handlers {
/* general object functions */
zend_object_add_ref_t add_ref;
zend_object_del_ref_t del_ref;
@@ -129,9 +129,10 @@ typedef struct _zend_object_handlers {
zend_object_compare_t compare_objects;
zend_object_cast_t cast_object;
zend_object_count_elements_t count_elements;
-} zend_object_handlers;
+};
extern ZEND_API zend_object_handlers std_object_handlers;
+
BEGIN_EXTERN_C()
ZEND_API union _zend_function *zend_std_get_static_method(zend_class_entry *ce, char *function_name_strval, int function_name_strlen TSRMLS_DC);
ZEND_API zval **zend_std_get_static_property(zend_class_entry *ce, char *property_name, int property_name_len, zend_bool silent TSRMLS_DC);
diff --git a/Zend/zend_objects.c b/Zend/zend_objects.c
index 41991d16e..e2cffc3d2 100644
--- a/Zend/zend_objects.c
+++ b/Zend/zend_objects.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_objects.c,v 1.56.2.1 2005/11/15 13:35:23 dmitry Exp $ */
+/* $Id: zend_objects.c,v 1.56.2.2 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
#include "zend_globals.h"
diff --git a/Zend/zend_objects.h b/Zend/zend_objects.h
index a211fb104..8058dfb2c 100644
--- a/Zend/zend_objects.h
+++ b/Zend/zend_objects.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_objects.h,v 1.25 2005/08/03 13:30:55 sniper Exp $ */
+/* $Id: zend_objects.h,v 1.25.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_OBJECTS_H
#define ZEND_OBJECTS_H
diff --git a/Zend/zend_objects_API.c b/Zend/zend_objects_API.c
index 59bf941ba..733ac9a96 100644
--- a/Zend/zend_objects_API.c
+++ b/Zend/zend_objects_API.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_objects_API.c,v 1.47.2.3 2005/11/15 12:41:31 dmitry Exp $ */
+/* $Id: zend_objects_API.c,v 1.47.2.4 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
#include "zend_globals.h"
diff --git a/Zend/zend_objects_API.h b/Zend/zend_objects_API.h
index 3c5e52202..f08174763 100644
--- a/Zend/zend_objects_API.h
+++ b/Zend/zend_objects_API.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_objects_API.h,v 1.20 2005/08/03 13:30:56 sniper Exp $ */
+/* $Id: zend_objects_API.h,v 1.20.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_OBJECTS_API_H
#define ZEND_OBJECTS_API_H
diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c
index e0a2f4834..0799cd66d 100644
--- a/Zend/zend_opcode.c
+++ b/Zend/zend_opcode.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_opcode.c,v 1.110.2.1 2005/09/01 10:05:32 dmitry Exp $ */
+/* $Id: zend_opcode.c,v 1.110.2.3 2006/01/04 23:53:04 andi Exp $ */
#include <stdio.h>
@@ -138,18 +138,20 @@ ZEND_API int zend_cleanup_function_data(zend_function *function TSRMLS_DC)
ZEND_API int zend_cleanup_class_data(zend_class_entry **pce TSRMLS_DC)
{
- if ((*pce)->static_members) {
- if ((*pce)->static_members != &(*pce)->default_static_members) {
- zend_hash_destroy((*pce)->static_members);
- FREE_HASHTABLE((*pce)->static_members);
- }
- (*pce)->static_members = NULL;
- }
if ((*pce)->type == ZEND_USER_CLASS) {
/* Clean all parts that can contain run-time data */
/* Note that only run-time accessed data need to be cleaned up, pre-defined data can
not contain objects and thus are not probelmatic */
zend_hash_apply(&(*pce)->function_table, (apply_func_t) zend_cleanup_function_data TSRMLS_CC);
+ (*pce)->static_members = NULL;
+ } else if (CE_STATIC_MEMBERS(*pce)) {
+ zend_hash_destroy(CE_STATIC_MEMBERS(*pce));
+ FREE_HASHTABLE(CE_STATIC_MEMBERS(*pce));
+#ifdef ZTS
+ CG(static_members)[(long)((*pce)->static_members)] = NULL;
+#else
+ (*pce)->static_members = NULL;
+#endif
}
return 0;
}
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c
index 3171db037..12282f44f 100644
--- a/Zend/zend_operators.c
+++ b/Zend/zend_operators.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_operators.c,v 1.208.2.1 2005/09/12 11:48:56 dmitry Exp $ */
+/* $Id: zend_operators.c,v 1.208.2.3 2006/01/04 23:53:04 andi Exp $ */
#include <ctype.h>
@@ -1783,7 +1783,7 @@ ZEND_API char *zend_str_tolower_copy(char *dest, const char *source, unsigned in
while (str < end) {
*result++ = tolower((int)*str++);
}
- *result = *end;
+ *result = '\0';
return dest;
}
diff --git a/Zend/zend_operators.h b/Zend/zend_operators.h
index b0c2b32f3..20c75de38 100644
--- a/Zend/zend_operators.h
+++ b/Zend/zend_operators.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_operators.h,v 1.94.2.2 2005/11/17 19:21:32 tony2001 Exp $ */
+/* $Id: zend_operators.h,v 1.94.2.4 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_OPERATORS_H
#define ZEND_OPERATORS_H
@@ -249,6 +249,7 @@ END_EXTERN_C()
#define Z_STRVAL(zval) (zval).value.str.val
#define Z_STRLEN(zval) (zval).value.str.len
#define Z_ARRVAL(zval) (zval).value.ht
+#define Z_OBJVAL(zval) (zval).value.obj
#define Z_OBJ_HANDLE(zval) (zval).value.obj.handle
#define Z_OBJ_HT(zval) (zval).value.obj.handlers
#define Z_OBJCE(zval) zend_get_class_entry(&(zval) TSRMLS_CC)
@@ -265,6 +266,7 @@ END_EXTERN_C()
#define Z_OBJPROP_P(zval_p) Z_OBJPROP(*zval_p)
#define Z_OBJCE_P(zval_p) Z_OBJCE(*zval_p)
#define Z_RESVAL_P(zval_p) Z_RESVAL(*zval_p)
+#define Z_OBJVAL_P(zval_p) Z_OBJVAL(*zval_p)
#define Z_OBJ_HANDLE_P(zval_p) Z_OBJ_HANDLE(*zval_p)
#define Z_OBJ_HT_P(zval_p) Z_OBJ_HT(*zval_p)
#define Z_OBJ_HANDLER_P(zval_p, h) Z_OBJ_HANDLER(*zval_p, h)
@@ -278,6 +280,7 @@ END_EXTERN_C()
#define Z_OBJPROP_PP(zval_pp) Z_OBJPROP(**zval_pp)
#define Z_OBJCE_PP(zval_pp) Z_OBJCE(**zval_pp)
#define Z_RESVAL_PP(zval_pp) Z_RESVAL(**zval_pp)
+#define Z_OBJVAL_PP(zval_pp) Z_OBJVAL(**zval_pp)
#define Z_OBJ_HANDLE_PP(zval_p) Z_OBJ_HANDLE(**zval_p)
#define Z_OBJ_HT_PP(zval_p) Z_OBJ_HT(**zval_p)
#define Z_OBJ_HANDLER_PP(zval_p, h) Z_OBJ_HANDLER(**zval_p, h)
diff --git a/Zend/zend_ptr_stack.c b/Zend/zend_ptr_stack.c
index b25faea2e..dc9d91a29 100644
--- a/Zend/zend_ptr_stack.c
+++ b/Zend/zend_ptr_stack.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_ptr_stack.c,v 1.23 2005/08/03 13:30:56 sniper Exp $ */
+/* $Id: zend_ptr_stack.c,v 1.23.2.1 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
#include "zend_ptr_stack.h"
diff --git a/Zend/zend_ptr_stack.h b/Zend/zend_ptr_stack.h
index 430cdfb03..788089172 100644
--- a/Zend/zend_ptr_stack.h
+++ b/Zend/zend_ptr_stack.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_ptr_stack.h,v 1.22.2.1 2005/10/20 07:23:22 dmitry Exp $ */
+/* $Id: zend_ptr_stack.h,v 1.22.2.2 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_PTR_STACK_H
#define ZEND_PTR_STACK_H
diff --git a/Zend/zend_qsort.c b/Zend/zend_qsort.c
index 03445a753..02ca5b6ee 100644
--- a/Zend/zend_qsort.c
+++ b/Zend/zend_qsort.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_qsort.c,v 1.8 2005/08/03 13:30:56 sniper Exp $ */
+/* $Id: zend_qsort.c,v 1.8.2.1 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
diff --git a/Zend/zend_qsort.h b/Zend/zend_qsort.h
index c961f4c68..0965baba5 100644
--- a/Zend/zend_qsort.h
+++ b/Zend/zend_qsort.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_qsort.h,v 1.8 2005/08/03 13:30:56 sniper Exp $ */
+/* $Id: zend_qsort.h,v 1.8.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_QSORT_H
#define ZEND_QSORT_H
diff --git a/Zend/zend_reflection_api.c b/Zend/zend_reflection_api.c
deleted file mode 100644
index 07f1fac43..000000000
--- a/Zend/zend_reflection_api.c
+++ /dev/null
@@ -1,4061 +0,0 @@
-/*
- +----------------------------------------------------------------------+
- | Zend Engine |
- +----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
- +----------------------------------------------------------------------+
- | This source file is subject to version 2.00 of the Zend license, |
- | that is bundled with this package in the file LICENSE, and is |
- | available through the world-wide-web at the following url: |
- | http://www.zend.com/license/2_00.txt. |
- | If you did not receive a copy of the Zend license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@zend.com so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Authors: Timm Friebe <thekid@thekid.de> |
- | George Schlossnagle <george@omniti.com> |
- | Andrei Zmievski <andrei@gravitonic.com> |
- | Marcus Boerger <helly@php.net> |
- +----------------------------------------------------------------------+
-*/
-
-/* $Id: zend_reflection_api.c,v 1.164.2.11 2005/11/24 19:56:11 helly Exp $ */
-#include "zend.h"
-#include "zend_API.h"
-#include "zend_exceptions.h"
-#include "zend_operators.h"
-#include "zend_constants.h"
-#include "zend_ini.h"
-#include "zend_interfaces.h"
-
-/* Class entry pointers */
-zend_class_entry *reflector_ptr;
-zend_class_entry *reflection_exception_ptr;
-zend_class_entry *reflection_ptr;
-zend_class_entry *reflection_function_ptr;
-zend_class_entry *reflection_parameter_ptr;
-zend_class_entry *reflection_class_ptr;
-zend_class_entry *reflection_object_ptr;
-zend_class_entry *reflection_method_ptr;
-zend_class_entry *reflection_property_ptr;
-zend_class_entry *reflection_extension_ptr;
-
-/* Method macros */
-#define METHOD_NOTSTATIC(ce) \
- if (!this_ptr || !instanceof_function(Z_OBJCE_P(this_ptr), ce TSRMLS_CC)) { \
- zend_error(E_ERROR, "%s() cannot be called statically", get_active_function_name(TSRMLS_C)); \
- return; \
- } \
-
-#define METHOD_NOTSTATIC_NUMPARAMS(ce, c) METHOD_NOTSTATIC(ce) \
- if (ZEND_NUM_ARGS() > c) { \
- ZEND_WRONG_PARAM_COUNT(); \
- } \
-
-/* Exception throwing macro */
-#define _DO_THROW(msg) \
- zend_throw_exception(reflection_exception_ptr, msg, 0 TSRMLS_CC); \
- return; \
-
-#define RETURN_ON_EXCEPTION \
- if (EG(exception) && Z_OBJCE_P(EG(exception)) == reflection_exception_ptr) { \
- return; \
- }
-
-#define GET_REFLECTION_OBJECT_PTR(target) \
- intern = (reflection_object *) zend_object_store_get_object(getThis() TSRMLS_CC); \
- if (intern == NULL || intern->ptr == NULL) { \
- RETURN_ON_EXCEPTION \
- zend_error(E_ERROR, "Internal error: Failed to retrieve the reflection object"); \
- } \
- target = intern->ptr; \
-
-/* Class constants */
-#define REGISTER_REFLECTION_CLASS_CONST_LONG(class_name, const_name, value) \
- zend_declare_class_constant_long(reflection_ ## class_name ## _ptr, const_name, sizeof(const_name)-1, (long)value TSRMLS_CC);
-
-/* {{{ Smart string functions */
-typedef struct _string {
- char *string;
- int len;
- int alloced;
-} string;
-
-static void string_init(string *str)
-{
- str->string = (char *) emalloc(1024);
- str->len = 1;
- str->alloced = 1024;
- *str->string = '\0';
-}
-
-static string *string_printf(string *str, const char *format, ...)
-{
- int len;
- va_list arg;
- char *s_tmp;
-
- va_start(arg, format);
- len = zend_vspprintf(&s_tmp, 0, format, arg);
- if (len) {
- register int nlen = (str->len + len + (1024 - 1)) & ~(1024 - 1);
- if (str->alloced < nlen) {
- str->alloced = nlen;
- str->string = erealloc(str->string, str->alloced);
- }
- memcpy(str->string + str->len - 1, s_tmp, len + 1);
- str->len += len;
- }
- efree(s_tmp);
- va_end(arg);
- return str;
-}
-
-static string *string_write(string *str, char *buf, int len)
-{
- register int nlen = (str->len + len + (1024 - 1)) & ~(1024 - 1);
- if (str->alloced < nlen) {
- str->alloced = nlen;
- str->string = erealloc(str->string, str->alloced);
- }
- memcpy(str->string + str->len - 1, buf, len);
- str->len += len;
- str->string[str->len - 1] = '\0';
- return str;
-}
-
-static string *string_append(string *str, string *append)
-{
- if (append->len > 1) {
- string_write(str, append->string, append->len - 1);
- }
- return str;
-}
-
-static void string_free(string *str)
-{
- efree(str->string);
- str->len = 0;
- str->alloced = 0;
- str->string = NULL;
-}
-/* }}} */
-
-/* Struct for properties */
-typedef struct _property_reference {
- zend_class_entry *ce;
- zend_property_info *prop;
-} property_reference;
-
-/* Struct for parameters */
-typedef struct _parameter_reference {
- zend_uint offset;
- zend_uint required;
- struct _zend_arg_info *arg_info;
- zend_function *fptr;
-} parameter_reference;
-
-/* Struct for reflection objects */
-typedef struct {
- zend_object zo;
- void *ptr;
- unsigned int free_ptr:1;
- zval *obj;
- zend_class_entry *ce;
-} reflection_object;
-
-static zend_object_handlers reflection_object_handlers;
-
-static void _default_get_entry(zval *object, char *name, int name_len, zval *return_value TSRMLS_DC)
-{
- zval **value;
-
- if (zend_hash_find(Z_OBJPROP_P(object), name, name_len, (void **) &value) == FAILURE) {
- RETURN_FALSE;
- }
-
- *return_value = **value;
- zval_copy_ctor(return_value);
-}
-
-static void reflection_register_implement(zend_class_entry *class_entry, zend_class_entry *interface_entry TSRMLS_DC)
-{
- zend_uint num_interfaces = ++class_entry->num_interfaces;
-
- class_entry->interfaces = (zend_class_entry **) realloc(class_entry->interfaces, sizeof(zend_class_entry *) * num_interfaces);
- class_entry->interfaces[num_interfaces - 1] = interface_entry;
-}
-
-static void reflection_free_objects_storage(void *object TSRMLS_DC)
-{
- reflection_object *intern = (reflection_object *) object;
-
- if (intern->free_ptr && intern->ptr) {
- efree(intern->ptr);
- intern->ptr = NULL;
- }
- if (intern->obj) {
- zval_ptr_dtor(&intern->obj);
- }
- zend_objects_free_object_storage(object TSRMLS_CC);
-}
-
-static void reflection_objects_clone(void *object, void **object_clone TSRMLS_DC)
-{
- reflection_object *intern = (reflection_object *) object;
- reflection_object **intern_clone = (reflection_object **) object_clone;
-
- *intern_clone = emalloc(sizeof(reflection_object));
- (*intern_clone)->zo.ce = intern->zo.ce;
- (*intern_clone)->zo.guards = NULL;
- ALLOC_HASHTABLE((*intern_clone)->zo.properties);
- (*intern_clone)->ptr = intern->ptr;
- (*intern_clone)->free_ptr = intern->free_ptr;
- (*intern_clone)->obj = intern->obj;
- if (intern->obj) {
- zval_add_ref(&intern->obj);
- }
-}
-
-static zend_object_value reflection_objects_new(zend_class_entry *class_type TSRMLS_DC)
-{
- zval tmp;
- zend_object_value retval;
- reflection_object *intern;
-
- intern = emalloc(sizeof(reflection_object));
- intern->zo.ce = class_type;
- intern->zo.guards = NULL;
- intern->ptr = NULL;
- intern->obj = NULL;
- intern->free_ptr = 0;
-
- ALLOC_HASHTABLE(intern->zo.properties);
- zend_hash_init(intern->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
- zend_hash_copy(intern->zo.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
- retval.handle = zend_objects_store_put(intern, NULL, reflection_free_objects_storage, reflection_objects_clone TSRMLS_CC);
- retval.handlers = &reflection_object_handlers;
- return retval;
-}
-
-static zval * reflection_instanciate(zend_class_entry *pce, zval *object TSRMLS_DC)
-{
- if (!object) {
- ALLOC_ZVAL(object);
- }
- Z_TYPE_P(object) = IS_OBJECT;
- object_init_ex(object, pce);
- object->refcount = 1;
- object->is_ref = 1;
- return object;
-}
-
-static void _const_string(string *str, char *name, zval *value, char *indent TSRMLS_DC);
-static void _function_string(string *str, zend_function *fptr, char *indent TSRMLS_DC);
-static void _property_string(string *str, zend_property_info *prop, char *prop_name, char* indent TSRMLS_DC);
-static void _class_string(string *str, zend_class_entry *ce, zval *obj, char *indent TSRMLS_DC);
-static void _extension_string(string *str, zend_module_entry *module, char *indent TSRMLS_DC);
-
-/* {{{ _class_string */
-static void _class_string(string *str, zend_class_entry *ce, zval *obj, char *indent TSRMLS_DC)
-{
- int count, count_static_props = 0, count_static_funcs = 0, count_shadow_props = 0;
- string sub_indent;
-
- string_init(&sub_indent);
- string_printf(&sub_indent, "%s ", indent);
-
- /* TBD: Repair indenting of doc comment (or is this to be done in the parser?) */
- if (ce->type == ZEND_USER_CLASS && ce->doc_comment) {
- string_printf(str, "%s%s", indent, ce->doc_comment);
- string_write(str, "\n", 1);
- }
-
- if (obj) {
- string_printf(str, "%sObject of class [ ", indent);
- } else {
- string_printf(str, "%s%s [ ", indent, (ce->ce_flags & ZEND_ACC_INTERFACE) ? "Interface" : "Class");
- }
- string_printf(str, (ce->type == ZEND_USER_CLASS) ? "<user" : "<internal");
- if (ce->module) {
- string_printf(str, ":%s", ce->module->name);
- }
- string_printf(str, "> ");
- if (ce->get_iterator != NULL) {
- string_printf(str, "<iterateable> ");
- }
- if (ce->ce_flags & ZEND_ACC_INTERFACE) {
- string_printf(str, "interface ");
- } else {
- if (ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
- string_printf(str, "abstract ");
- }
- if (ce->ce_flags & ZEND_ACC_FINAL_CLASS) {
- string_printf(str, "final ");
- }
- string_printf(str, "class ");
- }
- string_write(str, ce->name, ce->name_length);
- if (ce->parent) {
- string_printf(str, " extends %s", ce->parent->name);
- }
-
- if (ce->num_interfaces) {
- zend_uint i;
-
- string_printf(str, " implements %s", ce->interfaces[0]->name);
- for (i = 1; i < ce->num_interfaces; ++i) {
- string_printf(str, ", %s", ce->interfaces[i]->name);
- }
- }
- string_printf(str, " ] {\n");
-
- /* The information where a class is declared is only available for user classes */
- if (ce->type == ZEND_USER_CLASS) {
- string_printf(str, "%s @@ %s %d-%d\n", indent, ce->filename,
- ce->line_start, ce->line_end);
- }
-
- /* Constants */
- if (&ce->constants_table) {
- string_printf(str, "\n");
- count = zend_hash_num_elements(&ce->constants_table);
- string_printf(str, "%s - Constants [%d] {\n", indent, count);
- if (count > 0) {
- HashPosition pos;
- zval **value;
- char *key;
- uint key_len;
- ulong num_index;
-
- zend_hash_internal_pointer_reset_ex(&ce->constants_table, &pos);
-
- while (zend_hash_get_current_data_ex(&ce->constants_table, (void **) &value, &pos) == SUCCESS) {
- zend_hash_get_current_key_ex(&ce->constants_table, &key, &key_len, &num_index, 0, &pos);
-
- _const_string(str, key, *value, indent TSRMLS_CC);
- zend_hash_move_forward_ex(&ce->constants_table, &pos);
- }
- }
- string_printf(str, "%s }\n", indent);
- }
-
- /* Static properties */
- if (&ce->properties_info) {
- /* counting static properties */
- count = zend_hash_num_elements(&ce->properties_info);
- if (count > 0) {
- HashPosition pos;
- zend_property_info *prop;
-
- zend_hash_internal_pointer_reset_ex(&ce->properties_info, &pos);
-
- while (zend_hash_get_current_data_ex(&ce->properties_info, (void **) &prop, &pos) == SUCCESS) {
- if(prop->flags & ZEND_ACC_SHADOW) {
- count_shadow_props++;
- } else if (prop->flags & ZEND_ACC_STATIC) {
- count_static_props++;
- }
- zend_hash_move_forward_ex(&ce->properties_info, &pos);
- }
- }
-
- /* static properties */
- string_printf(str, "\n%s - Static properties [%d] {\n", indent, count_static_props);
- if (count_static_props > 0) {
- HashPosition pos;
- zend_property_info *prop;
-
- zend_hash_internal_pointer_reset_ex(&ce->properties_info, &pos);
-
- while (zend_hash_get_current_data_ex(&ce->properties_info, (void **) &prop, &pos) == SUCCESS) {
- if ((prop->flags & ZEND_ACC_STATIC) && !(prop->flags & ZEND_ACC_SHADOW)) {
- _property_string(str, prop, NULL, sub_indent.string TSRMLS_CC);
- }
-
- zend_hash_move_forward_ex(&ce->properties_info, &pos);
- }
- }
- string_printf(str, "%s }\n", indent);
- }
-
- /* Static methods */
- if (&ce->function_table) {
- /* counting static properties */
- count = zend_hash_num_elements(&ce->function_table);
- if (count > 0) {
- HashPosition pos;
- zend_function *mptr;
-
- zend_hash_internal_pointer_reset_ex(&ce->function_table, &pos);
-
- while (zend_hash_get_current_data_ex(&ce->function_table, (void **) &mptr, &pos) == SUCCESS) {
- if (mptr->common.fn_flags & ZEND_ACC_STATIC) {
- count_static_funcs++;
- }
- zend_hash_move_forward_ex(&ce->function_table, &pos);
- }
- }
-
- /* static properties */
- string_printf(str, "\n%s - Static methods [%d] {", indent, count_static_funcs);
- if (count_static_funcs > 0) {
- HashPosition pos;
- zend_function *mptr;
-
- zend_hash_internal_pointer_reset_ex(&ce->function_table, &pos);
-
- while (zend_hash_get_current_data_ex(&ce->function_table, (void **) &mptr, &pos) == SUCCESS) {
- if (mptr->common.fn_flags & ZEND_ACC_STATIC) {
- string_printf(str, "\n");
- _function_string(str, mptr, sub_indent.string TSRMLS_CC);
- }
- zend_hash_move_forward_ex(&ce->function_table, &pos);
- }
- } else {
- string_printf(str, "\n");
- }
- string_printf(str, "%s }\n", indent);
- }
-
- /* Default/Implicit properties */
- if (&ce->properties_info) {
- count = zend_hash_num_elements(&ce->properties_info) - count_static_props - count_shadow_props;
- string_printf(str, "\n%s - Properties [%d] {\n", indent, count);
- if (count > 0) {
- HashPosition pos;
- zend_property_info *prop;
-
- zend_hash_internal_pointer_reset_ex(&ce->properties_info, &pos);
-
- while (zend_hash_get_current_data_ex(&ce->properties_info, (void **) &prop, &pos) == SUCCESS) {
- if (!(prop->flags & (ZEND_ACC_STATIC|ZEND_ACC_SHADOW))) {
- _property_string(str, prop, NULL, sub_indent.string TSRMLS_CC);
- }
- zend_hash_move_forward_ex(&ce->properties_info, &pos);
- }
- }
- string_printf(str, "%s }\n", indent);
- }
-
- if (obj && Z_OBJ_HT_P(obj)->get_properties) {
- string dyn;
- HashTable *properties = Z_OBJ_HT_P(obj)->get_properties(obj TSRMLS_CC);
- HashPosition pos;
- zval **prop;
-
- string_init(&dyn);
- count = 0;
-
- zend_hash_internal_pointer_reset_ex(properties, &pos);
-
- while (zend_hash_get_current_data_ex(properties, (void **) &prop, &pos) == SUCCESS) {
- char *prop_name;
- uint prop_name_size;
- ulong index;
-
- if (zend_hash_get_current_key_ex(properties, &prop_name, &prop_name_size, &index, 1, &pos) == HASH_KEY_IS_STRING) {
- if (prop_name_size && prop_name[0]) { /* skip all private and protected properties */
- if (!zend_hash_quick_exists(&ce->properties_info, prop_name, prop_name_size, zend_get_hash_value(prop_name, prop_name_size))) {
- count++;
- _property_string(&dyn, NULL, prop_name, sub_indent.string TSRMLS_CC);
- }
- }
- efree(prop_name);
- }
- zend_hash_move_forward_ex(properties, &pos);
- }
-
- string_printf(str, "\n%s - Dynamic properties [%d] {\n", indent, count);
- string_append(str, &dyn);
- string_printf(str, "%s }\n", indent);
- string_free(&dyn);
- }
-
- /* Non static methods */
- if (&ce->function_table) {
- count = zend_hash_num_elements(&ce->function_table) - count_static_funcs;
- string_printf(str, "\n%s - Methods [%d] {", indent, count);
- if (count > 0) {
- HashPosition pos;
- zend_function *mptr;
-
- zend_hash_internal_pointer_reset_ex(&ce->function_table, &pos);
-
- while (zend_hash_get_current_data_ex(&ce->function_table, (void **) &mptr, &pos) == SUCCESS) {
- if (!(mptr->common.fn_flags & ZEND_ACC_STATIC)) {
- string_printf(str, "\n");
- _function_string(str, mptr, sub_indent.string TSRMLS_CC);
- }
- zend_hash_move_forward_ex(&ce->function_table, &pos);
- }
- } else {
- string_printf(str, "\n");
- }
- string_printf(str, "%s }\n", indent);
- }
-
- string_printf(str, "%s}\n", indent);
- string_free(&sub_indent);
-}
-/* }}} */
-
-/* {{{ _const_string */
-static void _const_string(string *str, char *name, zval *value, char *indent TSRMLS_DC)
-{
- string_printf(str, "%s Constant [ %s %s ] { }\n",
- indent,
- zend_zval_type_name(value),
- name);
-}
-/* }}} */
-
-/* {{{ _get_recv_opcode */
-static zend_op* _get_recv_op(zend_op_array *op_array, zend_uint offset)
-{
- zend_op *op = op_array->opcodes;
- zend_op *end = op + op_array->last;
-
- ++offset;
- while (op < end) {
- if ((op->opcode == ZEND_RECV || op->opcode == ZEND_RECV_INIT) &&
- op->op1.u.constant.value.lval == offset) {
- return op;
- }
- ++op;
- }
- return NULL;
-}
-/* }}} */
-
-/* {{{ _parameter_string */
-static void _parameter_string(string *str, zend_function *fptr, struct _zend_arg_info *arg_info, zend_uint offset, zend_uint required, char* indent TSRMLS_DC)
-{
- string_printf(str, "Parameter #%d [ ", offset);
- if (offset >= required) {
- string_printf(str, "<optional> ");
- } else {
- string_printf(str, "<required> ");
- }
- if (arg_info->class_name) {
- string_printf(str, "%s ", arg_info->class_name);
- if (arg_info->allow_null) {
- string_printf(str, "or NULL ");
- }
- } else if (arg_info->array_type_hint) {
- string_printf(str, "array ");
- if (arg_info->allow_null) {
- string_printf(str, "or NULL ");
- }
- }
- if (arg_info->pass_by_reference) {
- string_write(str, "&", sizeof("&")-1);
- }
- if (arg_info->name) {
- string_printf(str, "$%s", arg_info->name);
- } else {
- string_printf(str, "$param%d", offset);
- }
- if (fptr->type == ZEND_USER_FUNCTION && offset >= required) {
- zend_op *precv = _get_recv_op((zend_op_array*)fptr, offset);
- if (precv && precv->opcode == ZEND_RECV_INIT && precv->op2.op_type != IS_UNUSED) {
- zval *zv, zv_copy;
- int use_copy;
- string_write(str, " = ", sizeof(" = ")-1);
- ALLOC_ZVAL(zv);
- *zv = precv->op2.u.constant;
- zval_copy_ctor(zv);
- INIT_PZVAL(zv);
- zval_update_constant(&zv, (void*)1 TSRMLS_CC);
- if (Z_TYPE_P(zv) == IS_BOOL) {
- if (Z_LVAL_P(zv)) {
- string_write(str, "true", sizeof("true")-1);
- } else {
- string_write(str, "false", sizeof("false")-1);
- }
- } else if (Z_TYPE_P(zv) == IS_NULL) {
- string_write(str, "NULL", sizeof("NULL")-1);
- } else if (Z_TYPE_P(zv) == IS_STRING) {
- string_write(str, "'", sizeof("'")-1);
- string_write(str, Z_STRVAL_P(zv), MIN(Z_STRLEN_P(zv), 15));
- if (Z_STRLEN_P(zv) > 15) {
- string_write(str, "...", sizeof("...")-1);
- }
- string_write(str, "'", sizeof("'")-1);
- } else {
- zend_make_printable_zval(zv, &zv_copy, &use_copy);
- string_write(str, Z_STRVAL(zv_copy), Z_STRLEN(zv_copy));
- if (use_copy) {
- zval_dtor(&zv_copy);
- }
- }
- zval_ptr_dtor(&zv);
- }
- }
- string_write(str, " ]", sizeof(" ]")-1);
-}
-/* }}} */
-
-/* {{{ _function_parameter_string */
-static void _function_parameter_string(string *str, zend_function *fptr, char* indent TSRMLS_DC)
-{
- struct _zend_arg_info *arg_info = fptr->common.arg_info;
- zend_uint i, required = fptr->common.required_num_args;
-
- if (!arg_info) {
- return;
- }
-
- string_printf(str, "\n");
- string_printf(str, "%s- Parameters [%d] {\n", indent, fptr->common.num_args);
- for (i = 0; i < fptr->common.num_args; i++) {
- string_printf(str, "%s ", indent);
- _parameter_string(str, fptr, arg_info, i, required, indent TSRMLS_CC);
- string_write(str, "\n", sizeof("\n")-1);
- arg_info++;
- }
- string_printf(str, "%s}\n", indent);
-}
-/* }}} */
-
-/* {{{ _function_string */
-static void _function_string(string *str, zend_function *fptr, char* indent TSRMLS_DC)
-{
- string param_indent;
-
- /* TBD: Repair indenting of doc comment (or is this to be done in the parser?)
- * What's "wrong" is that any whitespace before the doc comment start is
- * swallowed, leading to an unaligned comment.
- */
- if (fptr->type == ZEND_USER_FUNCTION && fptr->op_array.doc_comment) {
- string_printf(str, "%s%s\n", indent, fptr->op_array.doc_comment);
- }
-
- string_printf(str, fptr->common.scope ? "%sMethod [ " : "%sFunction [ ", indent);
- string_printf(str, (fptr->type == ZEND_USER_FUNCTION) ? "<user> " : "<internal> ");
- if (fptr->common.fn_flags & ZEND_ACC_CTOR) {
- string_printf(str, "<ctor> ");
- }
- if (fptr->common.fn_flags & ZEND_ACC_DTOR) {
- string_printf(str, "<dtor> ");
- }
- if (fptr->common.fn_flags & ZEND_ACC_ABSTRACT) {
- string_printf(str, "abstract ");
- }
- if (fptr->common.fn_flags & ZEND_ACC_FINAL) {
- string_printf(str, "final ");
- }
- if (fptr->common.fn_flags & ZEND_ACC_STATIC) {
- string_printf(str, "static ");
- }
-
- /* These are mutually exclusive */
- switch (fptr->common.fn_flags & ZEND_ACC_PPP_MASK) {
- case ZEND_ACC_PUBLIC:
- string_printf(str, "public ");
- break;
- case ZEND_ACC_PRIVATE:
- string_printf(str, "private ");
- break;
- case ZEND_ACC_PROTECTED:
- string_printf(str, "protected ");
- break;
- default:
- string_printf(str, "<visibility error> ");
- break;
- }
-
- string_printf(str, fptr->common.scope ? "method " : "function ");
- if (fptr->op_array.return_reference) {
- string_printf(str, "&");
- }
- string_printf(str, "%s ] {\n", fptr->common.function_name);
- /* The information where a function is declared is only available for user classes */
- if (fptr->type == ZEND_USER_FUNCTION) {
- string_printf(str, "%s @@ %s %d - %d\n", indent,
- fptr->op_array.filename,
- fptr->op_array.line_start,
- fptr->op_array.line_end);
- }
- string_init(&param_indent);
- string_printf(&param_indent, "%s ", indent);
- _function_parameter_string(str, fptr, param_indent.string TSRMLS_CC);
- string_free(&param_indent);
- string_printf(str, "%s}\n", indent);
-}
-/* }}} */
-
-/* {{{ _property_string */
-static void _property_string(string *str, zend_property_info *prop, char *prop_name, char* indent TSRMLS_DC)
-{
- char *class_name;
-
- string_printf(str, "%sProperty [ ", indent);
- if (!prop) {
- string_printf(str, "<dynamic> public $%s", prop_name);
- } else {
- if (!(prop->flags & ZEND_ACC_STATIC)) {
- if (prop->flags & ZEND_ACC_IMPLICIT_PUBLIC) {
- string_write(str, "<implicit> ", sizeof("<implicit> ") - 1);
- } else {
- string_write(str, "<default> ", sizeof("<default> ") - 1);
- }
- }
-
- /* These are mutually exclusive */
- switch (prop->flags & ZEND_ACC_PPP_MASK) {
- case ZEND_ACC_PUBLIC:
- string_printf(str, "public ");
- break;
- case ZEND_ACC_PRIVATE:
- string_printf(str, "private ");
- break;
- case ZEND_ACC_PROTECTED:
- string_printf(str, "protected ");
- break;
- }
- if(prop->flags & ZEND_ACC_STATIC) {
- string_printf(str, "static ");
- }
-
- zend_unmangle_property_name_ex(prop->name, prop->name_length, &class_name, &prop_name);
- string_printf(str, "$%s", prop_name);
- }
-
- string_printf(str, " ]\n");
-}
-/* }}} */
-
-static int _extension_ini_string(zend_ini_entry *ini_entry, int num_args, va_list args, zend_hash_key *hash_key)
-{
- string *str = va_arg(args, string *);
- char *indent = va_arg(args, char *);
- int number = va_arg(args, int);
- char *comma = "";
-
- if (number == ini_entry->module_number) {
- string_printf(str, " %sEntry [ %s <", indent, ini_entry->name);
- if (ini_entry->modifiable & ZEND_INI_ALL) {
- string_printf(str, "ALL");
- } else {
- if (ini_entry->modifiable & ZEND_INI_USER) {
- string_printf(str, "USER");
- comma = ",";
- }
- if (ini_entry->modifiable & ZEND_INI_PERDIR) {
- string_printf(str, "%sPERDIR", comma);
- comma = ",";
- }
- if (ini_entry->modifiable & ZEND_INI_SYSTEM) {
- string_printf(str, "%sSYSTEM", comma);
- }
- }
-
- string_printf(str, "> ]\n");
- string_printf(str, " %s Current = '%s'\n", indent, ini_entry->value ? ini_entry->value : "");
- if (ini_entry->modified) {
- string_printf(str, " %s Default = '%s'\n", indent, ini_entry->orig_value ? ini_entry->orig_value : "");
- }
- string_printf(str, " %s}\n", indent);
- }
- return ZEND_HASH_APPLY_KEEP;
-}
-
-static int _extension_class_string(zend_class_entry **pce, int num_args, va_list args, zend_hash_key *hash_key)
-{
- string *str = va_arg(args, string *);
- char *indent = va_arg(args, char *);
- struct _zend_module_entry *module = va_arg(args, struct _zend_module_entry*);
- int *num_classes = va_arg(args, int*);
-
- if ((*pce)->module && !strcasecmp((*pce)->module->name, module->name)) {
- TSRMLS_FETCH();
- string_printf(str, "\n");
- _class_string(str, *pce, NULL, indent TSRMLS_CC);
- (*num_classes)++;
- }
- return ZEND_HASH_APPLY_KEEP;
-}
-
-/* {{{ _extension_string */
-static void _extension_string(string *str, zend_module_entry *module, char *indent TSRMLS_DC)
-{
- string_printf(str, "%sExtension [ ", indent);
- if (module->type == MODULE_PERSISTENT) {
- string_printf(str, "<persistent>");
- }
- if (module->type == MODULE_TEMPORARY) {
- string_printf(str, "<temporary>" );
- }
- string_printf(str, " extension #%d %s version %s ] {\n",
- module->module_number, module->name,
- (module->version == NO_VERSION_YET) ? "<no_version>" : module->version);
-
- {
- string str_ini;
- string_init(&str_ini);
- zend_hash_apply_with_arguments(EG(ini_directives), (apply_func_args_t) _extension_ini_string, 3, &str_ini, indent, module->module_number);
- if (str_ini.len > 1) {
- string_printf(str, "\n - INI {\n");
- string_append(str, &str_ini);
- string_printf(str, "%s }\n", indent);
- }
- string_free(&str_ini);
- }
-
- if (module->functions && module->functions->fname) {
- zend_function *fptr;
- zend_function_entry *func = module->functions;
-
- string_printf(str, "\n - Functions {\n");
-
- /* Is there a better way of doing this? */
- while (func->fname) {
- if (zend_hash_find(EG(function_table), func->fname, strlen(func->fname) + 1, (void**) &fptr) == FAILURE) {
- zend_error(E_WARNING, "Internal error: Cannot find extension function %s in global function table", func->fname);
- continue;
- }
-
- _function_string(str, fptr, " " TSRMLS_CC);
- func++;
- }
- string_printf(str, "%s }\n", indent);
- }
-
- {
- string str_classes;
- string sub_indent;
- int num_classes = 0;
-
- string_init(&sub_indent);
- string_printf(&sub_indent, "%s ", indent);
- string_init(&str_classes);
- zend_hash_apply_with_arguments(EG(class_table), (apply_func_args_t) _extension_class_string, 4, &str_classes, sub_indent.string, module, &num_classes TSRMLS_CC);
- if (num_classes) {
- string_printf(str, "\n - Classes [%d] {\n", num_classes);
- string_append(str, &str_classes);
- string_printf(str, "%s }\n", indent);
- }
- string_free(&str_classes);
- string_free(&sub_indent);
- }
-
- string_printf(str, "%s}\n", indent);
-}
-/* }}} */
-
-/* {{{ _function_check_flag */
-static void _function_check_flag(INTERNAL_FUNCTION_PARAMETERS, int mask)
-{
- reflection_object *intern;
- zend_function *mptr;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_method_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(mptr);
- RETURN_BOOL(mptr->common.fn_flags & mask);
-}
-/* }}} */
-
-/* {{{ zend_reflection_class_factory */
-ZEND_API void zend_reflection_class_factory(zend_class_entry *ce, zval *object TSRMLS_DC)
-{
- reflection_object *intern;
- zval *name;
-
- MAKE_STD_ZVAL(name);
- ZVAL_STRINGL(name, ce->name, ce->name_length, 1);
- reflection_instanciate(reflection_class_ptr, object TSRMLS_CC);
- intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
- intern->ptr = ce;
- intern->free_ptr = 0;
- intern->ce = ce;
- zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
-}
-/* }}} */
-
-/* {{{ reflection_extension_factory */
-static void reflection_extension_factory(zval *object, char *name_str TSRMLS_DC)
-{
- reflection_object *intern;
- zval *name;
- int name_len = strlen(name_str);
- char *lcname;
- struct _zend_module_entry *module;
-
- lcname = do_alloca(name_len + 1);
- zend_str_tolower_copy(lcname, name_str, name_len);
- if (zend_hash_find(&module_registry, lcname, name_len + 1, (void **)&module) == FAILURE) {
- free_alloca(lcname);
- return;
- }
- free_alloca(lcname);
-
- reflection_instanciate(reflection_extension_ptr, object TSRMLS_CC);
- intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
- MAKE_STD_ZVAL(name);
- ZVAL_STRINGL(name, module->name, name_len, 1);
- intern->ptr = module;
- intern->free_ptr = 0;
- intern->ce = NULL;
- zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
-}
-/* }}} */
-
-/* {{{ reflection_parameter_factory */
-static void reflection_parameter_factory(zend_function *fptr, struct _zend_arg_info *arg_info, zend_uint offset, zend_uint required, zval *object TSRMLS_DC)
-{
- reflection_object *intern;
- parameter_reference *reference;
- zval *name;
-
- MAKE_STD_ZVAL(name);
- if (arg_info->name) {
- ZVAL_STRINGL(name, arg_info->name, arg_info->name_len, 1);
- } else {
- ZVAL_NULL(name);
- }
- reflection_instanciate(reflection_parameter_ptr, object TSRMLS_CC);
- intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
- reference = (parameter_reference*) emalloc(sizeof(parameter_reference));
- reference->arg_info = arg_info;
- reference->offset = offset;
- reference->required = required;
- reference->fptr = fptr;
- intern->ptr = reference;
- intern->free_ptr = 1;
- intern->ce = fptr->common.scope;
- zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
-}
-/* }}} */
-
-/* {{{ reflection_function_factory */
-static void reflection_function_factory(zend_function *function, zval *object TSRMLS_DC)
-{
- reflection_object *intern;
- zval *name;
-
- MAKE_STD_ZVAL(name);
- ZVAL_STRING(name, function->common.function_name, 1);
-
- reflection_instanciate(reflection_function_ptr, object TSRMLS_CC);
- intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
- intern->ptr = function;
- intern->free_ptr = 0;
- intern->ce = NULL;
- zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
-}
-/* }}} */
-
-/* {{{ reflection_method_factory */
-static void reflection_method_factory(zend_class_entry *ce, zend_function *method, zval *object TSRMLS_DC)
-{
- reflection_object *intern;
- zval *name;
- zval *classname;
-
- MAKE_STD_ZVAL(name);
- ZVAL_STRING(name, method->common.function_name, 1);
- MAKE_STD_ZVAL(classname);
- ZVAL_STRINGL(classname, ce->name, ce->name_length, 1);
- reflection_instanciate(reflection_method_ptr, object TSRMLS_CC);
- intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
- intern->ptr = method;
- intern->free_ptr = 0;
- intern->ce = ce;
- zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
- zend_hash_update(Z_OBJPROP_P(object), "class", sizeof("class"), (void **) &classname, sizeof(zval *), NULL);
-}
-/* }}} */
-
-/* {{{ reflection_property_factory */
-static void reflection_property_factory(zend_class_entry *ce, zend_property_info *prop, zval *object TSRMLS_DC)
-{
- reflection_object *intern;
- zval *name;
- zval *classname;
- property_reference *reference;
- char *class_name, *prop_name;
-
- zend_unmangle_property_name_ex(prop->name, prop->name_length, &class_name, &prop_name);
-
- if (!(prop->flags & ZEND_ACC_PRIVATE)) {
- /* we have to seach the class hierarchy for this (implicit) public or protected property */
- zend_class_entry *tmp_ce = ce->parent;
- zend_property_info *tmp_info;
-
- while (tmp_ce && zend_hash_find(&tmp_ce->properties_info, prop_name, strlen(prop_name) + 1, (void **) &tmp_info) == SUCCESS) {
- if (tmp_info->flags & ZEND_ACC_PRIVATE) {
- /* private in super class => NOT the same property */
- break;
- }
- ce = tmp_ce;
- prop = tmp_info;
- tmp_ce = tmp_ce->parent;
- }
- }
-
- MAKE_STD_ZVAL(name);
- ZVAL_STRING(name, prop_name, 1);
-
- MAKE_STD_ZVAL(classname);
- ZVAL_STRINGL(classname, ce->name, ce->name_length, 1);
-
- reflection_instanciate(reflection_property_ptr, object TSRMLS_CC);
- intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
- reference = (property_reference*) emalloc(sizeof(property_reference));
- reference->ce = ce;
- reference->prop = prop;
- intern->ptr = reference;
- intern->free_ptr = 1;
- intern->ce = ce;
- zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
- zend_hash_update(Z_OBJPROP_P(object), "class", sizeof("class"), (void **) &classname, sizeof(zval *), NULL);
-}
-/* }}} */
-
-/* {{{ _reflection_export */
-static void _reflection_export(INTERNAL_FUNCTION_PARAMETERS, zend_class_entry *ce_ptr, int ctor_argc)
-{
- zval *reflector_ptr;
- zval output, *output_ptr = &output;
- zval *argument_ptr, *argument2_ptr;
- zval *retval_ptr, **params[2];
- int result;
- int return_output = 0;
- zend_fcall_info fci;
- zend_fcall_info_cache fcc;
- zval fname;
-
- if (ctor_argc == 1) {
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|b", &argument_ptr, &return_output) == FAILURE) {
- return;
- }
- } else {
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz|b", &argument_ptr, &argument2_ptr, &return_output) == FAILURE) {
- return;
- }
- }
-
- INIT_PZVAL(&output);
-
- /* Create object */
- MAKE_STD_ZVAL(reflector_ptr);
- if (object_and_properties_init(reflector_ptr, ce_ptr, NULL) == FAILURE) {
- _DO_THROW("Could not create reflector");
- }
-
- /* Call __construct() */
- params[0] = &argument_ptr;
- params[1] = &argument2_ptr;
-
- fci.size = sizeof(fci);
- fci.function_table = NULL;
- fci.function_name = NULL;
- fci.symbol_table = NULL;
- fci.object_pp = &reflector_ptr;
- fci.retval_ptr_ptr = &retval_ptr;
- fci.param_count = ctor_argc;
- fci.params = params;
- fci.no_separation = 1;
-
- fcc.initialized = 1;
- fcc.function_handler = ce_ptr->constructor;
- fcc.calling_scope = ce_ptr;
- fcc.object_pp = &reflector_ptr;
-
- result = zend_call_function(&fci, &fcc TSRMLS_CC);
-
- if (retval_ptr) {
- zval_ptr_dtor(&retval_ptr);
- }
-
- if (EG(exception)) {
- zval_ptr_dtor(&reflector_ptr);
- return;
- }
- if (result == FAILURE) {
- zval_ptr_dtor(&reflector_ptr);
- _DO_THROW("Could not create reflector");
- }
-
- /* Call static reflection::export */
- ZVAL_BOOL(&output, return_output);
- params[0] = &reflector_ptr;
- params[1] = &output_ptr;
-
- ZVAL_STRINGL(&fname, "export", sizeof("export") - 1, 0);
- fci.function_table = &reflection_ptr->function_table;
- fci.function_name = &fname;
- fci.object_pp = NULL;
- fci.retval_ptr_ptr = &retval_ptr;
- fci.param_count = 2;
- fci.params = params;
- fci.no_separation = 1;
-
- result = zend_call_function(&fci, NULL TSRMLS_CC);
-
- if (result == FAILURE && EG(exception) == NULL) {
- zval_ptr_dtor(&reflector_ptr);
- zval_ptr_dtor(&retval_ptr);
- _DO_THROW("Could not execute reflection::export()");
- }
-
- if (return_output) {
- COPY_PZVAL_TO_ZVAL(*return_value, retval_ptr);
- } else {
- zval_ptr_dtor(&retval_ptr);
- }
-
- /* Destruct reflector which is no longer needed */
- zval_ptr_dtor(&reflector_ptr);
-}
-/* }}} */
-
-/* {{{ Preventing __clone from being called */
-ZEND_METHOD(reflection, __clone)
-{
- /* Should never be executable */
- _DO_THROW("Cannot clone object using __clone()");
-}
-/* }}} */
-
-/* {{{ proto public static mixed Reflection::export(Reflector r [, bool return])
- Exports a reflection object. Returns the output if TRUE is specified for return, printing it otherwise. */
-ZEND_METHOD(reflection, export)
-{
- zval *object, fname, *retval_ptr;
- int result;
- zend_bool return_output = 0;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O|b", &object, reflector_ptr, &return_output) == FAILURE) {
- return;
- }
-
- /* Invoke the __toString() method */
- ZVAL_STRINGL(&fname, "__tostring", sizeof("__tostring") - 1, 1);
- result= call_user_function_ex(NULL, &object, &fname, &retval_ptr, 0, NULL, 0, NULL TSRMLS_CC);
- zval_dtor(&fname);
-
- if (result == FAILURE) {
- _DO_THROW("Invocation of method __toString() failed");
- /* Returns from this function */
- }
-
- if (!retval_ptr) {
- zend_error(E_WARNING, "%s::__toString() did not return anything", Z_OBJCE_P(object)->name);
- RETURN_FALSE;
- }
-
- if (return_output) {
- COPY_PZVAL_TO_ZVAL(*return_value, retval_ptr);
- } else {
- /* No need for _r variant, return of __toString should always be a string */
- zend_print_zval(retval_ptr, 0);
- zend_printf("\n");
- zval_ptr_dtor(&retval_ptr);
- }
-}
-/* }}} */
-
-/* {{{ proto public static array Reflection::getModifierNames(int modifiers)
- Returns an array of modifier names */
-ZEND_METHOD(reflection, getModifierNames)
-{
- long modifiers;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &modifiers) == FAILURE) {
- return;
- }
-
- array_init(return_value);
-
- if (modifiers & (ZEND_ACC_ABSTRACT | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
- add_next_index_stringl(return_value, "abstract", sizeof("abstract")-1, 1);
- }
- if (modifiers & (ZEND_ACC_FINAL | ZEND_ACC_FINAL_CLASS)) {
- add_next_index_stringl(return_value, "final", sizeof("final")-1, 1);
- }
-
- /* These are mutually exclusive */
- switch (modifiers & ZEND_ACC_PPP_MASK) {
- case ZEND_ACC_PUBLIC:
- add_next_index_stringl(return_value, "public", sizeof("public")-1, 1);
- break;
- case ZEND_ACC_PRIVATE:
- add_next_index_stringl(return_value, "private", sizeof("private")-1, 1);
- break;
- case ZEND_ACC_PROTECTED:
- add_next_index_stringl(return_value, "protected", sizeof("protected")-1, 1);
- break;
- }
-
- if (modifiers & ZEND_ACC_STATIC) {
- add_next_index_stringl(return_value, "static", sizeof("static")-1, 1);
- }
-}
-/* }}} */
-
-/* {{{ proto public static mixed ReflectionFunction::export(string name [, bool return]) throws ReflectionException
- Exports a reflection object. Returns the output if TRUE is specified for return, printing it otherwise. */
-ZEND_METHOD(reflection_function, export)
-{
- _reflection_export(INTERNAL_FUNCTION_PARAM_PASSTHRU, reflection_function_ptr, 1);
-}
-/* }}} */
-
-/* {{{ proto public ReflectionFunction::__construct(string name)
- Constructor. Throws an Exception in case the given function does not exist */
-ZEND_METHOD(reflection_function, __construct)
-{
- zval *name;
- zval *object;
- char *lcname;
- reflection_object *intern;
- zend_function *fptr;
- char *name_str;
- int name_len;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name_str, &name_len) == FAILURE) {
- return;
- }
-
- object = getThis();
- intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
- if (intern == NULL) {
- return;
- }
- lcname = do_alloca(name_len + 1);
- zend_str_tolower_copy(lcname, name_str, name_len);
- if (zend_hash_find(EG(function_table), lcname, name_len + 1, (void **)&fptr) == FAILURE) {
- free_alloca(lcname);
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Function %s() does not exist", name_str);
- return;
- }
- free_alloca(lcname);
- MAKE_STD_ZVAL(name);
- ZVAL_STRING(name, fptr->common.function_name, 1);
- zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
- intern->ptr = fptr;
- intern->free_ptr = 0;
- intern->ce = NULL;
-}
-/* }}} */
-
-/* {{{ proto public string ReflectionFunction::__toString()
- Returns a string representation */
-ZEND_METHOD(reflection_function, __toString)
-{
- reflection_object *intern;
- zend_function *fptr;
- string str;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(fptr);
- string_init(&str);
- _function_string(&str, fptr, "" TSRMLS_CC);
- RETURN_STRINGL(str.string, str.len - 1, 0);
-}
-/* }}} */
-
-/* {{{ proto public string ReflectionFunction::getName()
- Returns this function's name */
-ZEND_METHOD(reflection, function_getName)
-{
- METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
- _default_get_entry(getThis(), "name", sizeof("name"), return_value TSRMLS_CC);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionFunction::isInternal()
- Returns whether this is an internal function */
-ZEND_METHOD(reflection, function_isInternal)
-{
- reflection_object *intern;
- zend_function *fptr;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(fptr);
- RETURN_BOOL(fptr->type == ZEND_INTERNAL_FUNCTION);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionFunction::isUserDefined()
- Returns whether this is an user-defined function */
-ZEND_METHOD(reflection_function, isUserDefined)
-{
- reflection_object *intern;
- zend_function *fptr;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(fptr);
- RETURN_BOOL(fptr->type == ZEND_USER_FUNCTION);
-}
-/* }}} */
-
-/* {{{ proto public string ReflectionFunction::getFileName()
- Returns the filename of the file this function was declared in */
-ZEND_METHOD(reflection_function, getFileName)
-{
- reflection_object *intern;
- zend_function *fptr;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(fptr);
- if (fptr->type == ZEND_USER_FUNCTION) {
- RETURN_STRING(fptr->op_array.filename, 1);
- }
- RETURN_FALSE;
-}
-/* }}} */
-
-/* {{{ proto public int ReflectionFunction::getStartLine()
- Returns the line this function's declaration starts at */
-ZEND_METHOD(reflection_function, getStartLine)
-{
- reflection_object *intern;
- zend_function *fptr;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(fptr);
- if (fptr->type == ZEND_USER_FUNCTION) {
- RETURN_LONG(fptr->op_array.line_start);
- }
- RETURN_FALSE;
-}
-/* }}} */
-
-/* {{{ proto public int ReflectionFunction::getEndLine()
- Returns the line this function's declaration ends at */
-ZEND_METHOD(reflection_function, getEndLine)
-{
- reflection_object *intern;
- zend_function *fptr;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(fptr);
- if (fptr->type == ZEND_USER_FUNCTION) {
- RETURN_LONG(fptr->op_array.line_end);
- }
- RETURN_FALSE;
-}
-/* }}} */
-
-/* {{{ proto public string ReflectionFunction::getDocComment()
- Returns the doc comment for this function */
-ZEND_METHOD(reflection_function, getDocComment)
-{
- reflection_object *intern;
- zend_function *fptr;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(fptr);
- if (fptr->type == ZEND_USER_FUNCTION && fptr->op_array.doc_comment) {
- RETURN_STRINGL(fptr->op_array.doc_comment, fptr->op_array.doc_comment_len, 1);
- }
- RETURN_FALSE;
-}
-/* }}} */
-
-/* {{{ proto public array ReflectionFunction::getStaticVariables()
- Returns an associative array containing this function's static variables and their values */
-ZEND_METHOD(reflection_function, getStaticVariables)
-{
- zval *tmp_copy;
- reflection_object *intern;
- zend_function *fptr;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(fptr);
-
- /* Return an empty array in case no static variables exist */
- array_init(return_value);
- if (fptr->type == ZEND_USER_FUNCTION && fptr->op_array.static_variables != NULL) {
- zend_hash_apply_with_argument(fptr->op_array.static_variables, (apply_func_arg_t) zval_update_constant, (void*)1 TSRMLS_CC);
- zend_hash_copy(Z_ARRVAL_P(return_value), fptr->op_array.static_variables, (copy_ctor_func_t) zval_add_ref, (void *) &tmp_copy, sizeof(zval *));
- }
-}
-/* }}} */
-
-/* {{{ proto public mixed ReflectionFunction::invoke(mixed* args)
- Invokes the function */
-ZEND_METHOD(reflection_function, invoke)
-{
- zval *retval_ptr;
- zval ***params;
- int result;
- int argc = ZEND_NUM_ARGS();
- zend_fcall_info fci;
- zend_fcall_info_cache fcc;
- reflection_object *intern;
- zend_function *fptr;
-
- METHOD_NOTSTATIC(reflection_function_ptr);
- GET_REFLECTION_OBJECT_PTR(fptr);
-
- params = safe_emalloc(sizeof(zval **), argc, 0);
- if (zend_get_parameters_array_ex(argc, params) == FAILURE) {
- efree(params);
- RETURN_FALSE;
- }
-
- fci.size = sizeof(fci);
- fci.function_table = NULL;
- fci.function_name = NULL;
- fci.symbol_table = NULL;
- fci.object_pp = NULL;
- fci.retval_ptr_ptr = &retval_ptr;
- fci.param_count = argc;
- fci.params = params;
- fci.no_separation = 1;
-
- fcc.initialized = 1;
- fcc.function_handler = fptr;
- fcc.calling_scope = EG(scope);
- fcc.object_pp = NULL;
-
- result = zend_call_function(&fci, &fcc TSRMLS_CC);
-
- efree(params);
-
- if (result == FAILURE) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Invocation of function %s() failed", fptr->common.function_name);
- return;
- }
-
- if (retval_ptr) {
- COPY_PZVAL_TO_ZVAL(*return_value, retval_ptr);
- }
-}
-/* }}} */
-
-static int _zval_array_to_c_array(zval **arg, zval ****params TSRMLS_DC) /* {{{ */
-{
- *(*params)++ = arg;
- return ZEND_HASH_APPLY_KEEP;
-} /* }}} */
-
-/* {{{ proto public mixed ReflectionFunction::invokeArgs(array args)
- Invokes the function and pass its arguments as array. */
-ZEND_METHOD(reflection_function, invokeArgs)
-{
- zval *retval_ptr;
- zval ***params;
- int result;
- int argc;
- zend_fcall_info fci;
- zend_fcall_info_cache fcc;
- reflection_object *intern;
- zend_function *fptr;
- zval *param_array;
-
- METHOD_NOTSTATIC(reflection_function_ptr);
- GET_REFLECTION_OBJECT_PTR(fptr);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &param_array) == FAILURE) {
- return;
- }
-
- argc = zend_hash_num_elements(Z_ARRVAL_P(param_array));
-
- params = safe_emalloc(sizeof(zval **), argc, 0);
- zend_hash_apply_with_argument(Z_ARRVAL_P(param_array), (apply_func_arg_t)_zval_array_to_c_array, &params TSRMLS_CC);
- params -= argc;
-
- fci.size = sizeof(fci);
- fci.function_table = NULL;
- fci.function_name = NULL;
- fci.symbol_table = NULL;
- fci.object_pp = NULL;
- fci.retval_ptr_ptr = &retval_ptr;
- fci.param_count = argc;
- fci.params = params;
- fci.no_separation = 1;
-
- fcc.initialized = 1;
- fcc.function_handler = fptr;
- fcc.calling_scope = EG(scope);
- fcc.object_pp = NULL;
-
- result = zend_call_function(&fci, &fcc TSRMLS_CC);
-
- efree(params);
-
- if (result == FAILURE) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Invocation of function %s() failed", fptr->common.function_name);
- return;
- }
-
- if (retval_ptr) {
- COPY_PZVAL_TO_ZVAL(*return_value, retval_ptr);
- }
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionFunction::returnsReference()
- Gets whether this function returns a reference */
-ZEND_METHOD(reflection_function, returnsReference)
-{
- reflection_object *intern;
- zend_function *fptr;
-
- METHOD_NOTSTATIC(reflection_function_ptr);
- GET_REFLECTION_OBJECT_PTR(fptr);
-
- RETURN_BOOL(fptr->op_array.return_reference);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionFunction::getNumberOfParameters()
- Gets the number of required parameters */
-ZEND_METHOD(reflection_function, getNumberOfParameters)
-{
- reflection_object *intern;
- zend_function *fptr;
-
- METHOD_NOTSTATIC(reflection_function_ptr);
- GET_REFLECTION_OBJECT_PTR(fptr);
-
- RETURN_LONG(fptr->common.num_args);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionFunction::getNumberOfRequiredParameters()
- Gets the number of required parameters */
-ZEND_METHOD(reflection_function, getNumberOfRequiredParameters)
-{
- reflection_object *intern;
- zend_function *fptr;
-
- METHOD_NOTSTATIC(reflection_function_ptr);
- GET_REFLECTION_OBJECT_PTR(fptr);
-
- RETURN_LONG(fptr->common.required_num_args);
-}
-/* }}} */
-
-/* {{{ proto public ReflectionParameter[] Reflection_Function::getParameters()
- Returns an array of parameter objects for this function */
-ZEND_METHOD(reflection_function, getParameters)
-{
- reflection_object *intern;
- zend_function *fptr;
- zend_uint i;
- struct _zend_arg_info *arg_info;
-
- METHOD_NOTSTATIC(reflection_function_ptr);
- GET_REFLECTION_OBJECT_PTR(fptr);
-
- arg_info= fptr->common.arg_info;
-
- array_init(return_value);
- for (i = 0; i < fptr->common.num_args; i++) {
- zval *parameter;
-
- ALLOC_ZVAL(parameter);
- reflection_parameter_factory(fptr, arg_info, i, fptr->common.required_num_args, parameter TSRMLS_CC);
- add_next_index_zval(return_value, parameter);
-
- arg_info++;
- }
-}
-/* }}} */
-
-/* {{{ proto public static mixed ReflectionParameter::export(mixed function, mixed parameter [, bool return]) throws ReflectionException
- Exports a reflection object. Returns the output if TRUE is specified for return, printing it otherwise. */
-ZEND_METHOD(reflection_parameter, export)
-{
- _reflection_export(INTERNAL_FUNCTION_PARAM_PASSTHRU, reflection_parameter_ptr, 2);
-}
-/* }}} */
-
-/* {{{ proto public ReflectionParameter::__construct(mixed function, mixed parameter)
- Constructor. Throws an Exception in case the given method does not exist */
-ZEND_METHOD(reflection_parameter, __construct)
-{
- parameter_reference *ref;
- zval *reference, *parameter;
- zval *object;
- zval *name;
- reflection_object *intern;
- zend_function *fptr;
- struct _zend_arg_info *arg_info;
- int position;
- zend_class_entry *ce = NULL;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &reference, &parameter) == FAILURE) {
- return;
- }
-
- object = getThis();
- intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
- if (intern == NULL) {
- return;
- }
-
- /* First, find the function */
- switch (Z_TYPE_P(reference)) {
- case IS_STRING: {
- char *lcname;
-
- convert_to_string_ex(&reference);
- lcname = do_alloca(Z_STRLEN_P(reference) + 1);
- zend_str_tolower_copy(lcname, Z_STRVAL_P(reference), Z_STRLEN_P(reference));
- if (zend_hash_find(EG(function_table), lcname, (int) Z_STRLEN_P(reference) + 1, (void**) &fptr) == FAILURE) {
- free_alloca(lcname);
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Function %s() does not exist", Z_STRVAL_P(reference));
- return;
- }
- free_alloca(lcname);
- }
- break;
-
- case IS_ARRAY: {
- zval **classref;
- zval **method;
- zend_class_entry **pce;
- char *lcname;
-
- if ((zend_hash_index_find(Z_ARRVAL_P(reference), 0, (void **) &classref) == FAILURE)
- || (zend_hash_index_find(Z_ARRVAL_P(reference), 1, (void **) &method) == FAILURE)) {
- _DO_THROW("Expected array($object, $method) or array($classname, $method)");
- /* returns out of this function */
- }
-
- if (Z_TYPE_PP(classref) == IS_OBJECT) {
- ce = Z_OBJCE_PP(classref);
- } else {
- convert_to_string_ex(classref);
- if (zend_lookup_class(Z_STRVAL_PP(classref), Z_STRLEN_PP(classref), &pce TSRMLS_CC) == FAILURE) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Class %s does not exist", Z_STRVAL_PP(classref));
- return;
- }
- ce = *pce;
- }
-
- convert_to_string_ex(method);
- lcname = do_alloca(Z_STRLEN_PP(method) + 1);
- zend_str_tolower_copy(lcname, Z_STRVAL_PP(method), Z_STRLEN_PP(method));
- if (zend_hash_find(&ce->function_table, lcname, (int)(Z_STRLEN_PP(method) + 1), (void **) &fptr) == FAILURE) {
- free_alloca(lcname);
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Method %s::%s() does not exist", Z_STRVAL_PP(classref), Z_STRVAL_PP(method));
- return;
- }
- free_alloca(lcname);
- }
- break;
-
- default:
- _DO_THROW("The parameter class is expected to be either a string or an array(class, method)");
- /* returns out of this function */
- }
-
- /* Now, search for the parameter */
- arg_info = fptr->common.arg_info;
- if (Z_TYPE_P(parameter) == IS_LONG) {
- position= Z_LVAL_P(parameter);
- if (position < 0 || (zend_uint)position >= fptr->common.num_args) {
- _DO_THROW("The parameter specified by its offset could not be found");
- /* returns out of this function */
- }
- } else {
- zend_uint i;
-
- position= -1;
- convert_to_string_ex(&parameter);
- for (i = 0; i < fptr->common.num_args; i++) {
- if (arg_info[i].name && strcmp(arg_info[i].name, Z_STRVAL_P(parameter)) == 0) {
- position= i;
- break;
- }
- }
- if (position == -1) {
- _DO_THROW("The parameter specified by its name could not be found");
- /* returns out of this function */
- }
- }
-
- MAKE_STD_ZVAL(name);
- if (arg_info[position].name) {
- ZVAL_STRINGL(name, arg_info[position].name, arg_info[position].name_len, 1);
- } else {
- ZVAL_NULL(name);
- }
- zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
-
- ref = (parameter_reference*) emalloc(sizeof(parameter_reference));
- ref->arg_info = &arg_info[position];
- ref->offset = (zend_uint)position;
- ref->required = fptr->common.required_num_args;
- ref->fptr = fptr;
- intern->ptr = ref;
- intern->free_ptr = 1;
- intern->ce = ce;
-}
-/* }}} */
-
-/* {{{ proto public string ReflectionParameter::__toString()
- Returns a string representation */
-ZEND_METHOD(reflection_parameter, __toString)
-{
- reflection_object *intern;
- parameter_reference *param;
- string str;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(param);
- string_init(&str);
- _parameter_string(&str, param->fptr, param->arg_info, param->offset, param->required, "" TSRMLS_CC);
- RETURN_STRINGL(str.string, str.len - 1, 0);
-}
-/* }}} */
-
-/* {{{ proto public string ReflectionParameter::getName()
- Returns this parameters's name */
-ZEND_METHOD(reflection_parameter, getName)
-{
- METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
- _default_get_entry(getThis(), "name", sizeof("name"), return_value TSRMLS_CC);
-}
-/* }}} */
-
-/* {{{ proto public ReflectionClass ReflectionParameter::getClass()
- Returns this parameters's class hint or NULL if there is none */
-ZEND_METHOD(reflection_parameter, getClass)
-{
- reflection_object *intern;
- parameter_reference *param;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(param);
-
- if (!param->arg_info->class_name) {
- RETURN_NULL();
- } else {
- zend_class_entry **pce;
-
- if (zend_lookup_class_ex(param->arg_info->class_name, param->arg_info->class_name_len, 1, &pce TSRMLS_CC) == FAILURE) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Class %s does not exist", param->arg_info->class_name);
- return;
- }
- zend_reflection_class_factory(*pce, return_value TSRMLS_CC);
- }
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionParameter::isArray()
- Returns whether parameter MUST be an array */
-ZEND_METHOD(reflection_parameter, isArray)
-{
- reflection_object *intern;
- parameter_reference *param;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(param);
-
- RETVAL_BOOL(param->arg_info->array_type_hint);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionParameter::allowsNull()
- Returns whether NULL is allowed as this parameters's value */
-ZEND_METHOD(reflection_parameter, allowsNull)
-{
- reflection_object *intern;
- parameter_reference *param;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(param);
-
- RETVAL_BOOL(param->arg_info->allow_null);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionParameter::isPassedByReference()
- Returns whether this parameters is passed to by reference */
-ZEND_METHOD(reflection_parameter, isPassedByReference)
-{
- reflection_object *intern;
- parameter_reference *param;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(param);
-
- RETVAL_BOOL(param->arg_info->pass_by_reference);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionParameter::isOptional()
- Returns whether this parameter is an optional parameter */
-ZEND_METHOD(reflection_parameter, isOptional)
-{
- reflection_object *intern;
- parameter_reference *param;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(param);
-
- RETVAL_BOOL(param->offset >= param->required);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionParameter::isDefaultValueAvailable()
- Returns whether the default value of this parameter is available */
-ZEND_METHOD(reflection_parameter, isDefaultValueAvailable)
-{
- reflection_object *intern;
- parameter_reference *param;
- zend_op *precv;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(param);
-
- if (param->fptr->type != ZEND_USER_FUNCTION)
- {
- RETURN_FALSE;
- }
- if (param->offset < param->required) {
- RETURN_FALSE;
- }
- precv = _get_recv_op((zend_op_array*)param->fptr, param->offset);
- if (!precv || precv->opcode != ZEND_RECV_INIT || precv->op2.op_type == IS_UNUSED) {
- RETURN_FALSE;
- }
- RETURN_TRUE;
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionParameter::getDefaultValue()
- Returns the default value of this parameter or throws an exception */
-ZEND_METHOD(reflection_parameter, getDefaultValue)
-{
- reflection_object *intern;
- parameter_reference *param;
- zend_op *precv;
- zval *zv, zv_copy;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(param);
-
- if (param->fptr->type != ZEND_USER_FUNCTION)
- {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Cannot determine default value for internal functions");
- return;
- }
- if (param->offset < param->required) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Parameter is not optional");
- return;
- }
- precv = _get_recv_op((zend_op_array*)param->fptr, param->offset);
- if (!precv || precv->opcode != ZEND_RECV_INIT || precv->op2.op_type == IS_UNUSED) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Internal error");
- return;
- }
-
- zv_copy = precv->op2.u.constant;
- zv = &zv_copy;
- zval_update_constant(&zv, (void*)0 TSRMLS_CC);
- RETURN_ZVAL(zv, 1, 1);
-}
-/* }}} */
-
-/* {{{ proto public static mixed ReflectionMethod::export(mixed class, string name [, bool return]) throws ReflectionException
- Exports a reflection object. Returns the output if TRUE is specified for return, printing it otherwise. */
-ZEND_METHOD(reflection_method, export)
-{
- _reflection_export(INTERNAL_FUNCTION_PARAM_PASSTHRU, reflection_method_ptr, 2);
-}
-/* }}} */
-
-/* {{{ proto public ReflectionMethod::__construct(mixed class, string name)
- Constructor. Throws an Exception in case the given method does not exist */
-ZEND_METHOD(reflection_method, __construct)
-{
- zval *name, *classname;
- zval *object;
- reflection_object *intern;
- char *lcname;
- zend_class_entry **pce;
- zend_class_entry *ce;
- zend_function *mptr;
- char *name_str;
- int name_len;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zs", &classname, &name_str, &name_len) == FAILURE) {
- return;
- }
-
- object = getThis();
- intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
- if (intern == NULL) {
- return;
- }
-
- /* Find the class entry */
- switch (Z_TYPE_P(classname)) {
- case IS_STRING:
- if (zend_lookup_class(Z_STRVAL_P(classname), Z_STRLEN_P(classname), &pce TSRMLS_CC) == FAILURE) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Class %s does not exist", Z_STRVAL_P(classname));
- return;
- }
- ce = *pce;
- break;
-
- case IS_OBJECT:
- ce = Z_OBJCE_P(classname);
- break;
-
- default:
- _DO_THROW("The parameter class is expected to be either a string or an object");
- /* returns out of this function */
- }
-
- MAKE_STD_ZVAL(classname);
- ZVAL_STRINGL(classname, ce->name, ce->name_length, 1);
- zend_hash_update(Z_OBJPROP_P(object), "class", sizeof("class"), (void **) &classname, sizeof(zval *), NULL);
-
- lcname = do_alloca(name_len + 1);
- zend_str_tolower_copy(lcname, name_str, name_len);
-
- if (zend_hash_find(&ce->function_table, lcname, name_len + 1, (void **) &mptr) == FAILURE) {
- free_alloca(lcname);
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Method %s::%s() does not exist", ce->name, name_str);
- return;
- }
- free_alloca(lcname);
-
- MAKE_STD_ZVAL(name);
- ZVAL_STRING(name, mptr->common.function_name, 1);
- zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
- intern->ptr = mptr;
- intern->free_ptr = 0;
- intern->ce = ce;
-}
-/* }}} */
-
-/* {{{ proto public string ReflectionMethod::__toString()
- Returns a string representation */
-ZEND_METHOD(reflection_method, __toString)
-{
- reflection_object *intern;
- zend_function *mptr;
- string str;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_method_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(mptr);
- string_init(&str);
- _function_string(&str, mptr, "" TSRMLS_CC);
- RETURN_STRINGL(str.string, str.len - 1, 0);
-}
-/* }}} */
-
-/* {{{ proto public mixed ReflectionMethod::invoke(mixed object, mixed* args)
- Invokes the method. */
-ZEND_METHOD(reflection_method, invoke)
-{
- zval *retval_ptr;
- zval ***params;
- zval **object_pp;
- reflection_object *intern;
- zend_function *mptr;
- int argc = ZEND_NUM_ARGS();
- int result;
- zend_fcall_info fci;
- zend_fcall_info_cache fcc;
- zend_class_entry *obj_ce;
-
- METHOD_NOTSTATIC(reflection_method_ptr);
-
- if (argc < 1) {
- zend_error(E_WARNING, "Invoke() expects at least one parameter, none given");
- RETURN_FALSE;
- }
-
- GET_REFLECTION_OBJECT_PTR(mptr);
-
- if (!(mptr->common.fn_flags & ZEND_ACC_PUBLIC) ||
- (mptr->common.fn_flags & ZEND_ACC_ABSTRACT)) {
- if (mptr->common.fn_flags & ZEND_ACC_ABSTRACT) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Trying to invoke abstract method %s::%s()",
- mptr->common.scope->name, mptr->common.function_name);
- } else {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Trying to invoke %s method %s::%s() from scope %s",
- mptr->common.fn_flags & ZEND_ACC_PROTECTED ? "protected" : "private",
- mptr->common.scope->name, mptr->common.function_name,
- Z_OBJCE_P(getThis())->name);
- }
- return;
- }
-
- params = safe_emalloc(sizeof(zval **), argc, 0);
- if (zend_get_parameters_array_ex(argc, params) == FAILURE) {
- efree(params);
- RETURN_FALSE;
- }
-
- /* In case this is a static method, we should'nt pass an object_pp
- * (which is used as calling context aka $this). We can thus ignore the
- * first parameter.
- *
- * Else, we verify that the given object is an instance of the class.
- */
- if (mptr->common.fn_flags & ZEND_ACC_STATIC) {
- object_pp = NULL;
- obj_ce = NULL;
- } else {
- if ((Z_TYPE_PP(params[0]) != IS_OBJECT)) {
- efree(params);
- _DO_THROW("Non-object passed to Invoke()");
- /* Returns from this function */
- }
- obj_ce = Z_OBJCE_PP(params[0]);
-
- if (!instanceof_function(obj_ce, mptr->common.scope TSRMLS_CC)) {
- efree(params);
- _DO_THROW("Given object is not an instance of the class this method was declared in");
- /* Returns from this function */
- }
-
- object_pp = params[0];
- }
-
- fci.size = sizeof(fci);
- fci.function_table = NULL;
- fci.function_name = NULL;
- fci.symbol_table = NULL;
- fci.object_pp = object_pp;
- fci.retval_ptr_ptr = &retval_ptr;
- fci.param_count = argc-1;
- fci.params = params+1;
- fci.no_separation = 1;
-
- fcc.initialized = 1;
- fcc.function_handler = mptr;
- fcc.calling_scope = obj_ce;
- fcc.object_pp = object_pp;
-
- result = zend_call_function(&fci, &fcc TSRMLS_CC);
-
- efree(params);
-
- if (result == FAILURE) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Invocation of method %s::%s() failed", mptr->common.scope->name, mptr->common.function_name);
- return;
- }
-
- if (retval_ptr) {
- COPY_PZVAL_TO_ZVAL(*return_value, retval_ptr);
- }
-}
-/* }}} */
-
-/* {{{ proto public mixed ReflectionMethod::invokeArgs(mixed object, array args)
- Invokes the function and pass its arguments as array. */
-ZEND_METHOD(reflection_method, invokeArgs)
-{
- zval *retval_ptr;
- zval ***params;
- zval *object;
- reflection_object *intern;
- zend_function *mptr;
- int argc;
- int result;
- zend_fcall_info fci;
- zend_fcall_info_cache fcc;
- zend_class_entry *obj_ce;
- zval *param_array;
-
- METHOD_NOTSTATIC(reflection_method_ptr);
-
- GET_REFLECTION_OBJECT_PTR(mptr);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o!a", &object, &param_array) == FAILURE) {
- return;
- }
-
- if (!(mptr->common.fn_flags & ZEND_ACC_PUBLIC) ||
- (mptr->common.fn_flags & ZEND_ACC_ABSTRACT)) {
- if (mptr->common.fn_flags & ZEND_ACC_ABSTRACT) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Trying to invoke abstract method %s::%s",
- mptr->common.scope->name, mptr->common.function_name);
- } else {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Trying to invoke %s method %s::%s from scope %s",
- mptr->common.fn_flags & ZEND_ACC_PROTECTED ? "protected" : "private",
- mptr->common.scope->name, mptr->common.function_name,
- Z_OBJCE_P(getThis())->name);
- }
- return;
- }
-
- argc = zend_hash_num_elements(Z_ARRVAL_P(param_array));
-
- params = safe_emalloc(sizeof(zval **), argc, 0);
- zend_hash_apply_with_argument(Z_ARRVAL_P(param_array), (apply_func_arg_t)_zval_array_to_c_array, &params TSRMLS_CC);
- params -= argc;
-
- /* In case this is a static method, we should'nt pass an object_pp
- * (which is used as calling context aka $this). We can thus ignore the
- * first parameter.
- *
- * Else, we verify that the given object is an instance of the class.
- */
- if (mptr->common.fn_flags & ZEND_ACC_STATIC) {
- object = NULL;
- obj_ce = NULL;
- } else {
- if (!object) {
- efree(params);
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Trying to invoke non static method %s::%s without an object",
- mptr->common.scope->name, mptr->common.function_name);
- return;
- }
-
- obj_ce = Z_OBJCE_P(object);
-
- if (!instanceof_function(obj_ce, mptr->common.scope TSRMLS_CC)) {
- efree(params);
- _DO_THROW("Given object is not an instance of the class this method was declared in");
- /* Returns from this function */
- }
- }
-
- fci.size = sizeof(fci);
- fci.function_table = NULL;
- fci.function_name = NULL;
- fci.symbol_table = NULL;
- fci.object_pp = &object;
- fci.retval_ptr_ptr = &retval_ptr;
- fci.param_count = argc;
- fci.params = params;
- fci.no_separation = 1;
-
- fcc.initialized = 1;
- fcc.function_handler = mptr;
- fcc.calling_scope = obj_ce;
- fcc.object_pp = &object;
-
- result = zend_call_function(&fci, &fcc TSRMLS_CC);
-
- efree(params);
-
- if (result == FAILURE) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Invocation of method %s::%s() failed", mptr->common.scope->name, mptr->common.function_name);
- return;
- }
-
- if (retval_ptr) {
- COPY_PZVAL_TO_ZVAL(*return_value, retval_ptr);
- }
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionMethod::isFinal()
- Returns whether this method is final */
-ZEND_METHOD(reflection_method, isFinal)
-{
- _function_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_FINAL);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionMethod::isAbstract()
- Returns whether this method is abstract */
-ZEND_METHOD(reflection_method, isAbstract)
-{
- _function_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_ABSTRACT);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionMethod::isPublic()
- Returns whether this method is public */
-ZEND_METHOD(reflection_method, isPublic)
-{
- _function_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_PUBLIC);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionMethod::isPrivate()
- Returns whether this method is private */
-ZEND_METHOD(reflection_method, isPrivate)
-{
- _function_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_PRIVATE);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionMethod::isProtected()
- Returns whether this method is protected */
-ZEND_METHOD(reflection_method, isProtected)
-{
- _function_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_PROTECTED);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionMethod::isStatic()
- Returns whether this method is static */
-ZEND_METHOD(reflection_method, isStatic)
-{
- _function_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_STATIC);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionMethod::isConstructor()
- Returns whether this method is the constructor */
-ZEND_METHOD(reflection_method, isConstructor)
-{
- reflection_object *intern;
- zend_function *mptr;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_method_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(mptr);
- /* we need to check if the ctor is the ctor of the class level we we
- * looking at since we might be looking at an inherited old style ctor
- * defined in base class. */
- RETURN_BOOL(mptr->common.fn_flags & ZEND_ACC_CTOR && intern->ce->constructor && intern->ce->constructor->common.scope == mptr->common.scope);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionMethod::isDestructor()
- Returns whether this method is static */
-ZEND_METHOD(reflection_method, isDestructor)
-{
- reflection_object *intern;
- zend_function *mptr;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_method_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(mptr);
- RETURN_BOOL(mptr->common.fn_flags & ZEND_ACC_DTOR);
-}
-/* }}} */
-
-/* {{{ proto public int ReflectionMethod::getModifiers()
- Returns a bitfield of the access modifiers for this method */
-ZEND_METHOD(reflection_method, getModifiers)
-{
- reflection_object *intern;
- zend_function *mptr;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_method_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(mptr);
-
- RETURN_LONG(mptr->common.fn_flags);
-}
-/* }}} */
-
-/* {{{ proto public ReflectionClass ReflectionMethod::getDeclaringClass()
- Get the declaring class */
-ZEND_METHOD(reflection_method, getDeclaringClass)
-{
- reflection_object *intern;
- zend_function *mptr;
-
- METHOD_NOTSTATIC(reflection_method_ptr);
- GET_REFLECTION_OBJECT_PTR(mptr);
-
- zend_reflection_class_factory(mptr->common.scope, return_value TSRMLS_CC);
-}
-/* }}} */
-
-/* {{{ proto public static mixed ReflectionClass::export(mixed argument [, bool return]) throws ReflectionException
- Exports a reflection object. Returns the output if TRUE is specified for return, printing it otherwise. */
-ZEND_METHOD(reflection_class, export)
-{
- _reflection_export(INTERNAL_FUNCTION_PARAM_PASSTHRU, reflection_class_ptr, 1);
-}
-/* }}} */
-
-/* {{{ reflection_class_object_ctor */
-static void reflection_class_object_ctor(INTERNAL_FUNCTION_PARAMETERS, int is_object)
-{
- zval *argument;
- zval *object;
- zval *classname;
- reflection_object *intern;
- zend_class_entry **ce;
-
- if (is_object) {
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &argument) == FAILURE) {
- return;
- }
- } else {
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &argument) == FAILURE) {
- return;
- }
- }
-
- object = getThis();
- intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
- if (intern == NULL) {
- return;
- }
-
- if (Z_TYPE_P(argument) == IS_OBJECT) {
- MAKE_STD_ZVAL(classname);
- ZVAL_STRINGL(classname, Z_OBJCE_P(argument)->name, Z_OBJCE_P(argument)->name_length, 1);
- zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &classname, sizeof(zval *), NULL);
- intern->ptr = Z_OBJCE_P(argument);
- if (is_object) {
- intern->obj = argument;
- zval_add_ref(&argument);
- }
- } else {
- convert_to_string_ex(&argument);
- if (zend_lookup_class(Z_STRVAL_P(argument), Z_STRLEN_P(argument), &ce TSRMLS_CC) == FAILURE) {
- if (!EG(exception)) {
- zend_throw_exception_ex(reflection_exception_ptr, -1 TSRMLS_CC, "Class %s does not exist", Z_STRVAL_P(argument));
- }
- return;
- }
-
- MAKE_STD_ZVAL(classname);
- ZVAL_STRINGL(classname, (*ce)->name, (*ce)->name_length, 1);
- zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &classname, sizeof(zval *), NULL);
-
- intern->ptr = *ce;
- }
- intern->free_ptr = 0;
-}
-/* }}} */
-
-/* {{{ proto public ReflectionClass::__construct(mixed argument) throws ReflectionException
- Constructor. Takes a string or an instance as an argument */
-ZEND_METHOD(reflection_class, __construct)
-{
- reflection_class_object_ctor(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
-}
-/* }}} */
-
-/* {{{ proto public array ReflectionClass::getStaticProperties()
- Returns an associative array containing all static property values of the class */
-ZEND_METHOD(reflection_class, getStaticProperties)
-{
- zval *tmp_copy;
- reflection_object *intern;
- zend_class_entry *ce;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ce);
-
- zend_update_class_constants(ce TSRMLS_CC);
-
- array_init(return_value);
- zend_hash_copy(Z_ARRVAL_P(return_value), ce->static_members, (copy_ctor_func_t) zval_add_ref, (void *) &tmp_copy, sizeof(zval *));
-}
-/* }}} */
-
-/* {{{ proto public mixed ReflectionClass::getStaticPropertyValue(string name [, mixed default])
- Returns the value of a tsstic property */
-ZEND_METHOD(reflection_class, getStaticPropertyValue)
-{
- reflection_object *intern;
- zend_class_entry *ce;
- char *name;
- int name_len;
- zval **prop, *def_value = NULL;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|z", &name, &name_len, &def_value) == FAILURE) {
- return;
- }
-
- GET_REFLECTION_OBJECT_PTR(ce);
-
- zend_update_class_constants(ce TSRMLS_CC);
- prop = zend_std_get_static_property(ce, name, name_len, 1 TSRMLS_CC);
- if (!prop) {
- if (def_value) {
- RETURN_ZVAL(def_value, 1, 0);
- } else {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Class %s does not have a property named %s", ce->name, name);
- }
- return;
- } else {
- RETURN_ZVAL(*prop, 1, 0);
- }
-}
-/* }}} */
-
-/* {{{ proto public void ReflectionClass::setStaticPropertyValue($name, $value)
- Sets the value of a static property */
-ZEND_METHOD(reflection_class, setStaticPropertyValue)
-{
- reflection_object *intern;
- zend_class_entry *ce;
- char *name;
- int name_len;
- zval **variable_ptr, *value;
- int refcount;
- zend_uchar is_ref;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz", &name, &name_len, &value) == FAILURE) {
- return;
- }
-
- GET_REFLECTION_OBJECT_PTR(ce);
-
- zend_update_class_constants(ce TSRMLS_CC);
- variable_ptr = zend_std_get_static_property(ce, name, name_len, 1 TSRMLS_CC);
- if (!variable_ptr) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Class %s does not have a property named %s", ce->name, name);
- return;
- }
- refcount = (*variable_ptr)->refcount;
- is_ref = (*variable_ptr)->is_ref;
- zval_dtor(*variable_ptr);
- **variable_ptr = *value;
- zval_copy_ctor(*variable_ptr);
- (*variable_ptr)->refcount = refcount;
- (*variable_ptr)->is_ref = is_ref;
-
-}
-/* }}} */
-
-/* {{{ proto public array ReflectionClass::getDefaultProperties()
- Returns an associative array containing copies of all default property values of the class */
-ZEND_METHOD(reflection_class, getDefaultProperties)
-{
- reflection_object *intern;
- zend_class_entry *ce;
- int count;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ce);
- array_init(return_value);
-
- zend_update_class_constants(ce TSRMLS_CC);
-
- count = zend_hash_num_elements(&ce->default_properties);
- if (count > 0) {
- HashPosition pos;
- zval **prop;
-
- zend_hash_internal_pointer_reset_ex(&ce->default_properties, &pos);
- while (zend_hash_get_current_data_ex(&ce->default_properties, (void **) &prop, &pos) == SUCCESS) {
- char *key, *class_name, *prop_name;
- uint key_len;
- ulong num_index;
- zval *prop_copy;
-
- zend_hash_get_current_key_ex(&ce->default_properties, &key, &key_len, &num_index, 0, &pos);
- zend_hash_move_forward_ex(&ce->default_properties, &pos);
- zend_unmangle_property_name_ex(key, key_len, &class_name, &prop_name);
- if (class_name && class_name[0] != '*' && strcmp(class_name, ce->name)) {
- /* filter privates from base classes */
- continue;
- }
-
- /* copy: enforce read only access */
- ALLOC_ZVAL(prop_copy);
- *prop_copy = **prop;
- zval_copy_ctor(prop_copy);
- INIT_PZVAL(prop_copy);
-
- add_assoc_zval(return_value, prop_name, prop_copy);
- }
- }
-}
-/* }}} */
-
-/* {{{ proto public string ReflectionClass::__toString()
- Returns a string representation */
-ZEND_METHOD(reflection_class, __toString)
-{
- reflection_object *intern;
- zend_class_entry *ce;
- string str;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ce);
- string_init(&str);
- _class_string(&str, ce, intern->obj, "" TSRMLS_CC);
- RETURN_STRINGL(str.string, str.len - 1, 0);
-}
-/* }}} */
-
-/* {{{ proto public string ReflectionClass::getName()
- Returns the class' name */
-ZEND_METHOD(reflection_class, getName)
-{
- METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
- _default_get_entry(getThis(), "name", sizeof("name"), return_value TSRMLS_CC);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionClass::isInternal()
- Returns whether this class is an internal class */
-ZEND_METHOD(reflection_class, isInternal)
-{
- reflection_object *intern;
- zend_class_entry *ce;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ce);
- RETURN_BOOL(ce->type == ZEND_INTERNAL_CLASS);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionClass::isUserDefined()
- Returns whether this class is user-defined */
-ZEND_METHOD(reflection_class, isUserDefined)
-{
- reflection_object *intern;
- zend_class_entry *ce;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ce);
- RETURN_BOOL(ce->type == ZEND_USER_CLASS);
-}
-/* }}} */
-
-/* {{{ proto public string ReflectionClass::getFileName()
- Returns the filename of the file this class was declared in */
-ZEND_METHOD(reflection_class, getFileName)
-{
- reflection_object *intern;
- zend_class_entry *ce;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ce);
- if (ce->type == ZEND_USER_CLASS) {
- RETURN_STRING(ce->filename, 1);
- }
- RETURN_FALSE;
-}
-/* }}} */
-
-/* {{{ proto public int ReflectionClass::getStartLine()
- Returns the line this class' declaration starts at */
-ZEND_METHOD(reflection_class, getStartLine)
-{
- reflection_object *intern;
- zend_class_entry *ce;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ce);
- if (ce->type == ZEND_USER_FUNCTION) {
- RETURN_LONG(ce->line_start);
- }
- RETURN_FALSE;
-}
-/* }}} */
-
-/* {{{ proto public int ReflectionClass::getEndLine()
- Returns the line this class' declaration ends at */
-ZEND_METHOD(reflection_class, getEndLine)
-{
- reflection_object *intern;
- zend_class_entry *ce;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ce);
- if (ce->type == ZEND_USER_CLASS) {
- RETURN_LONG(ce->line_end);
- }
- RETURN_FALSE;
-}
-/* }}} */
-
-/* {{{ proto public string ReflectionClass::getDocComment()
- Returns the doc comment for this class */
-ZEND_METHOD(reflection_class, getDocComment)
-{
- reflection_object *intern;
- zend_class_entry *ce;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ce);
- if (ce->type == ZEND_USER_CLASS && ce->doc_comment) {
- RETURN_STRINGL(ce->doc_comment, ce->doc_comment_len, 1);
- }
- RETURN_FALSE;
-}
-/* }}} */
-
-/* {{{ proto public ReflectionMethod ReflectionClass::getConstructor()
- Returns the class' constructor if there is one, NULL otherwise */
-ZEND_METHOD(reflection_class, getConstructor)
-{
- reflection_object *intern;
- zend_class_entry *ce;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ce);
-
- if (ce->constructor) {
- reflection_method_factory(ce, ce->constructor, return_value TSRMLS_CC);
- } else {
- RETURN_NULL();
- }
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionClass::hasMethod(string name)
- Returns wether a method exists or not */
-ZEND_METHOD(reflection_class, hasMethod)
-{
- reflection_object *intern;
- zend_class_entry *ce;
- char *name, *lc_name;
- int name_len;
-
- METHOD_NOTSTATIC(reflection_class_ptr);
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
- return;
- }
-
- GET_REFLECTION_OBJECT_PTR(ce);
- lc_name = zend_str_tolower_dup(name, name_len);
- if (zend_hash_exists(&ce->function_table, lc_name, name_len + 1)) {
- efree(lc_name);
- RETURN_TRUE;
- } else {
- efree(lc_name);
- RETURN_FALSE;
- }
-}
-/* }}} */
-
-/* {{{ proto public ReflectionMethod ReflectionClass::getMethod(string name) throws ReflectionException
- Returns the class' method specified by its name */
-ZEND_METHOD(reflection_class, getMethod)
-{
- reflection_object *intern;
- zend_class_entry *ce;
- zend_function *mptr;
- char *name, *lc_name;
- int name_len;
-
- METHOD_NOTSTATIC(reflection_class_ptr);
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
- return;
- }
-
- GET_REFLECTION_OBJECT_PTR(ce);
- lc_name = zend_str_tolower_dup(name, name_len);
- if (zend_hash_find(&ce->function_table, lc_name, name_len + 1, (void**) &mptr) == SUCCESS) {
- reflection_method_factory(ce, mptr, return_value TSRMLS_CC);
- efree(lc_name);
- } else {
- efree(lc_name);
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Method %s does not exist", name);
- return;
- }
-}
-/* }}} */
-
-/* {{{ _addmethod */
-static int _addmethod(zend_function *mptr, int num_args, va_list args, zend_hash_key *hash_key TSRMLS_DC)
-{
- zval *method;
- zend_class_entry *ce = *va_arg(args, zend_class_entry**);
- zval *retval = va_arg(args, zval*);
- long filter = va_arg(args, long);
-
- if (mptr->common.fn_flags & filter) {
- TSRMLS_FETCH();
- ALLOC_ZVAL(method);
- reflection_method_factory(ce, mptr, method TSRMLS_CC);
- add_next_index_zval(retval, method);
- }
- return 0;
-}
-/* }}} */
-
-/* {{{ proto public ReflectionMethod[] ReflectionClass::getMethods()
- Returns an array of this class' methods */
-ZEND_METHOD(reflection_class, getMethods)
-{
- reflection_object *intern;
- zend_class_entry *ce;
- long filter = 0;
- int argc = ZEND_NUM_ARGS();
-
- METHOD_NOTSTATIC(reflection_class_ptr);
- if (argc) {
- if (zend_parse_parameters(argc TSRMLS_CC, "|l", &filter) == FAILURE) {
- return;
- }
- } else {
- /* No parameters given, default to "return all" */
- filter = ZEND_ACC_PPP_MASK | ZEND_ACC_ABSTRACT | ZEND_ACC_FINAL | ZEND_ACC_STATIC;
- }
-
- GET_REFLECTION_OBJECT_PTR(ce);
-
- array_init(return_value);
- zend_hash_apply_with_arguments(&ce->function_table, (apply_func_args_t) _addmethod, 3, &ce, return_value, filter);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionClass::hasProperty(string name)
- Returns wether a property exists or not */
-ZEND_METHOD(reflection_class, hasProperty)
-{
- reflection_object *intern;
- zend_class_entry *ce;
- char *name;
- int name_len;
- zval *property;
-
- METHOD_NOTSTATIC(reflection_class_ptr);
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
- return;
- }
-
- GET_REFLECTION_OBJECT_PTR(ce);
- if (zend_hash_exists(&ce->properties_info, name, name_len + 1)) {
- RETURN_TRUE;
- } else {
- if (intern->obj && Z_OBJ_HANDLER_P(intern->obj, has_property))
- {
- MAKE_STD_ZVAL(property);
- ZVAL_STRINGL(property, name, name_len, 1);
- if (Z_OBJ_HANDLER_P(intern->obj, has_property)(intern->obj, property, 2 TSRMLS_CC)) {
- zval_ptr_dtor(&property);
- RETURN_TRUE;
- }
- zval_ptr_dtor(&property);
- }
- RETURN_FALSE;
- }
-}
-/* }}} */
-
-/* {{{ proto public ReflectionProperty ReflectionClass::getProperty(string name) throws ReflectionException
- Returns the class' property specified by its name */
-ZEND_METHOD(reflection_class, getProperty)
-{
- reflection_object *intern;
- zend_class_entry *ce;
- zend_property_info *property_info;
- char *name;
- int name_len;
-
- METHOD_NOTSTATIC(reflection_class_ptr);
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
- return;
- }
-
- GET_REFLECTION_OBJECT_PTR(ce);
- if (zend_hash_find(&ce->properties_info, name, name_len + 1, (void**) &property_info) == SUCCESS && (property_info->flags & ZEND_ACC_SHADOW) == 0) {
- reflection_property_factory(ce, property_info, return_value TSRMLS_CC);
- } else {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Property %s does not exist", name);
- return;
- }
-}
-/* }}} */
-
-/* {{{ _addproperty */
-static int _addproperty(zend_property_info *pptr, int num_args, va_list args, zend_hash_key *hash_key TSRMLS_DC)
-{
- zval *property;
- zend_class_entry *ce = *va_arg(args, zend_class_entry**);
- zval *retval = va_arg(args, zval*);
- long filter = va_arg(args, long);
-
- if (pptr->flags & ZEND_ACC_SHADOW) {
- return 0;
- }
-
- if (pptr->flags & filter) {
- TSRMLS_FETCH();
- ALLOC_ZVAL(property);
- reflection_property_factory(ce, pptr, property TSRMLS_CC);
- add_next_index_zval(retval, property);
- }
- return 0;
-}
-/* }}} */
-
-/* {{{ proto public ReflectionProperty[] ReflectionClass::getProperties()
- Returns an array of this class' properties */
-ZEND_METHOD(reflection_class, getProperties)
-{
- reflection_object *intern;
- zend_class_entry *ce;
- long filter = 0;
- int argc = ZEND_NUM_ARGS();
-
- METHOD_NOTSTATIC(reflection_class_ptr);
- if (argc) {
- if (zend_parse_parameters(argc TSRMLS_CC, "|l", &filter) == FAILURE) {
- return;
- }
- } else {
- /* No parameters given, default to "return all" */
- filter = ZEND_ACC_PPP_MASK | ZEND_ACC_STATIC;
- }
-
- GET_REFLECTION_OBJECT_PTR(ce);
-
- array_init(return_value);
- zend_hash_apply_with_arguments(&ce->properties_info, (apply_func_args_t) _addproperty, 3, &ce, return_value, filter);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionClass::hasConstant(string name)
- Returns wether a constant exists or not */
-ZEND_METHOD(reflection_class, hasConstant)
-{
- reflection_object *intern;
- zend_class_entry *ce;
- char *name;
- int name_len;
-
- METHOD_NOTSTATIC(reflection_class_ptr);
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
- return;
- }
-
- GET_REFLECTION_OBJECT_PTR(ce);
- if (zend_hash_exists(&ce->constants_table, name, name_len + 1)) {
- RETURN_TRUE;
- } else {
- RETURN_FALSE;
- }
-}
-/* }}} */
-
-/* {{{ proto public array ReflectionClass::getConstants()
- Returns an associative array containing this class' constants and their values */
-ZEND_METHOD(reflection_class, getConstants)
-{
- zval *tmp_copy;
- reflection_object *intern;
- zend_class_entry *ce;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ce);
- array_init(return_value);
- zend_hash_apply_with_argument(&ce->constants_table, (apply_func_arg_t) zval_update_constant, (void*)1 TSRMLS_CC);
- zend_hash_copy(Z_ARRVAL_P(return_value), &ce->constants_table, (copy_ctor_func_t) zval_add_ref, (void *) &tmp_copy, sizeof(zval *));
-}
-/* }}} */
-
-/* {{{ proto public mixed ReflectionClass::getConstant(string name)
- Returns the class' constant specified by its name */
-ZEND_METHOD(reflection_class, getConstant)
-{
- reflection_object *intern;
- zend_class_entry *ce;
- zval **value;
- char *name;
- int name_len;
-
- METHOD_NOTSTATIC(reflection_class_ptr);
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
- return;
- }
-
- GET_REFLECTION_OBJECT_PTR(ce);
- zend_hash_apply_with_argument(&ce->constants_table, (apply_func_arg_t) zval_update_constant, (void*)1 TSRMLS_CC);
- if (zend_hash_find(&ce->constants_table, name, name_len + 1, (void **) &value) == FAILURE) {
- RETURN_FALSE;
- }
- *return_value = **value;
- zval_copy_ctor(return_value);
-}
-/* }}} */
-
-/* {{{ _class_check_flag */
-static void _class_check_flag(INTERNAL_FUNCTION_PARAMETERS, int mask)
-{
- reflection_object *intern;
- zend_class_entry *ce;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ce);
- RETVAL_BOOL(ce->ce_flags & mask);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionClass::isInstantiable()
- Returns whether this class is instantiable */
-ZEND_METHOD(reflection_class, isInstantiable)
-{
- reflection_object *intern;
- zend_class_entry *ce;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ce);
- if (ce->ce_flags & (ZEND_ACC_INTERFACE | ZEND_ACC_IMPLICIT_ABSTRACT_CLASS | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
- RETURN_FALSE;
- }
-
- /* Basically, the class is instantiable. Though, if there is a constructor
- * and it is not publicly accessible, it isn't! */
- if (!ce->constructor) {
- RETURN_TRUE;
- }
-
- RETURN_BOOL(ce->constructor->common.fn_flags & ZEND_ACC_PUBLIC);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionClass::isInterface()
- Returns whether this is an interface or a class */
-ZEND_METHOD(reflection_class, isInterface)
-{
- _class_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_INTERFACE);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionClass::isFinal()
- Returns whether this class is final */
-ZEND_METHOD(reflection_class, isFinal)
-{
- _class_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_FINAL_CLASS);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionClass::isAbstract()
- Returns whether this class is abstract */
-ZEND_METHOD(reflection_class, isAbstract)
-{
- _class_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS);
-}
-/* }}} */
-
-/* {{{ proto public int ReflectionClass::getModifiers()
- Returns a bitfield of the access modifiers for this class */
-ZEND_METHOD(reflection_class, getModifiers)
-{
- reflection_object *intern;
- zend_class_entry *ce;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ce);
-
- RETURN_LONG(ce->ce_flags);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionClass::isInstance(stdclass object)
- Returns whether the given object is an instance of this class */
-ZEND_METHOD(reflection_class, isInstance)
-{
- reflection_object *intern;
- zend_class_entry *ce;
- zval *object;
-
- METHOD_NOTSTATIC(reflection_class_ptr);
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &object) == FAILURE) {
- return;
- }
- GET_REFLECTION_OBJECT_PTR(ce);
- RETURN_BOOL(ce == Z_OBJCE_P(object));
-}
-/* }}} */
-
-/* {{{ proto public stdclass ReflectionClass::newInstance(mixed* args, ...)
- Returns an instance of this class */
-ZEND_METHOD(reflection_class, newInstance)
-{
- zval *retval_ptr;
- reflection_object *intern;
- zend_class_entry *ce;
- int argc = ZEND_NUM_ARGS();
-
- METHOD_NOTSTATIC(reflection_class_ptr);
- GET_REFLECTION_OBJECT_PTR(ce);
-
- object_init_ex(return_value, ce);
-
- /* Run the constructor if there is one */
- if (ce->constructor) {
- zval ***params;
- zend_fcall_info fci;
- zend_fcall_info_cache fcc;
-
- if (!(ce->constructor->common.fn_flags & ZEND_ACC_PUBLIC)) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Access to non-public constructor of class %s", ce->name);
- return;
- }
-
- params = safe_emalloc(sizeof(zval **), argc, 0);
- if (zend_get_parameters_array_ex(argc, params) == FAILURE) {
- efree(params);
- RETURN_FALSE;
- }
-
- fci.size = sizeof(fci);
- fci.function_table = EG(function_table);
- fci.function_name = NULL;
- fci.symbol_table = NULL;
- fci.object_pp = &return_value;
- fci.retval_ptr_ptr = &retval_ptr;
- fci.param_count = argc;
- fci.params = params;
- fci.no_separation = 1;
-
- fcc.initialized = 1;
- fcc.function_handler = ce->constructor;
- fcc.calling_scope = EG(scope);
- fcc.object_pp = &return_value;
-
- if (zend_call_function(&fci, &fcc TSRMLS_CC) == FAILURE) {
- efree(params);
- zval_ptr_dtor(&retval_ptr);
- zend_error(E_WARNING, "Invocation of %s's constructor failed", ce->name);
- RETURN_NULL();
- }
- if (retval_ptr) {
- zval_ptr_dtor(&retval_ptr);
- }
- efree(params);
- }
-}
-/* }}} */
-
-/* {{{ proto public ReflectionClass[] ReflectionClass::getInterfaces()
- Returns an array of interfaces this class implements */
-ZEND_METHOD(reflection_class, getInterfaces)
-{
- reflection_object *intern;
- zend_class_entry *ce;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ce);
-
- /* Return an empty array if this class implements no interfaces */
- array_init(return_value);
-
- if (ce->num_interfaces) {
- zend_uint i;
-
- for (i=0; i < ce->num_interfaces; i++) {
- zval *interface;
- ALLOC_ZVAL(interface);
- zend_reflection_class_factory(ce->interfaces[i], interface TSRMLS_CC);
- add_next_index_zval(return_value, interface);
- }
- }
-}
-/* }}} */
-
-/* {{{ proto public ReflectionClass ReflectionClass::getParentClass()
- Returns the class' parent class, or, if none exists, FALSE */
-ZEND_METHOD(reflection_class, getParentClass)
-{
- reflection_object *intern;
- zend_class_entry *ce;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ce);
-
- if (ce->parent) {
- zend_reflection_class_factory(ce->parent, return_value TSRMLS_CC);
- } else {
- RETURN_FALSE;
- }
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionClass::isSubclassOf(string|ReflectionClass class)
- Returns whether this class is a subclass of another class */
-ZEND_METHOD(reflection_class, isSubclassOf)
-{
- reflection_object *intern, *argument;
- zend_class_entry *ce, **pce, *class_ce;
- zval *class_name;
-
- METHOD_NOTSTATIC(reflection_class_ptr);
- GET_REFLECTION_OBJECT_PTR(ce);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &class_name) == FAILURE) {
- return;
- }
-
- switch(class_name->type) {
- case IS_STRING:
- if (zend_lookup_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), &pce TSRMLS_CC) == FAILURE) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Interface %s does not exist", Z_STRVAL_P(class_name));
- return;
- }
- class_ce = *pce;
- break;
- case IS_OBJECT:
- if (instanceof_function(Z_OBJCE_P(class_name), reflection_class_ptr TSRMLS_CC)) {
- argument = (reflection_object *) zend_object_store_get_object(class_name TSRMLS_CC);
- if (argument == NULL || argument->ptr == NULL) {
- zend_error(E_ERROR, "Internal error: Failed to retrieve the argument's reflection object");
- /* Bails out */
- }
- class_ce = argument->ptr;
- break;
- }
- /* no break */
- default:
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Parameter one must either be a string or a ReflectionClass object");
- return;
- }
-
-
- RETURN_BOOL(instanceof_function(ce, class_ce TSRMLS_CC));
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionClass::implementsInterface(string|ReflectionClass interface_name)
- Returns whether this class is a subclass of another class */
-ZEND_METHOD(reflection_class, implementsInterface)
-{
- reflection_object *intern, *argument;
- zend_class_entry *ce, *interface_ce, **pce;
- zval *interface;
-
- METHOD_NOTSTATIC(reflection_class_ptr);
- GET_REFLECTION_OBJECT_PTR(ce);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &interface) == FAILURE) {
- return;
- }
-
- switch(interface->type) {
- case IS_STRING:
- if (zend_lookup_class(Z_STRVAL_P(interface), Z_STRLEN_P(interface), &pce TSRMLS_CC) == FAILURE) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Interface %s does not exist", Z_STRVAL_P(interface));
- return;
- }
- interface_ce = *pce;
- break;
- case IS_OBJECT:
- if (instanceof_function(Z_OBJCE_P(interface), reflection_class_ptr TSRMLS_CC)) {
- argument = (reflection_object *) zend_object_store_get_object(interface TSRMLS_CC);
- if (argument == NULL || argument->ptr == NULL) {
- zend_error(E_ERROR, "Internal error: Failed to retrieve the argument's reflection object");
- /* Bails out */
- }
- interface_ce = argument->ptr;
- break;
- }
- /* no break */
- default:
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Parameter one must either be a string or a ReflectionClass object");
- return;
- }
-
- if (!(interface_ce->ce_flags & ZEND_ACC_INTERFACE)) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Interface %s is a Class", interface_ce->name);
- return;
- }
- RETURN_BOOL(instanceof_function(ce, interface_ce TSRMLS_CC));
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionClass::isIterateable()
- Returns whether this class is iterateable (can be used inside foreach) */
-ZEND_METHOD(reflection_class, isIterateable)
-{
- reflection_object *intern;
- zend_class_entry *ce;
-
- METHOD_NOTSTATIC(reflection_class_ptr);
- GET_REFLECTION_OBJECT_PTR(ce);
-
- RETURN_BOOL(ce->get_iterator != NULL);
-}
-/* }}} */
-
-/* {{{ proto public ReflectionExtension|NULL ReflectionClass::getExtension()
- Returns NULL or the extension the class belongs to */
-ZEND_METHOD(reflection_class, getExtension)
-{
- reflection_object *intern;
- zend_class_entry *ce;
-
- METHOD_NOTSTATIC(reflection_class_ptr);
- GET_REFLECTION_OBJECT_PTR(ce);
-
- if (ce->module) {
- reflection_extension_factory(return_value, ce->module->name TSRMLS_CC);
- }
-}
-/* }}} */
-
-/* {{{ proto public string|false ReflectionClass::getExtensionName()
- Returns false or the name of the extension the class belongs to */
-ZEND_METHOD(reflection_class, getExtensionName)
-{
- reflection_object *intern;
- zend_class_entry *ce;
-
- METHOD_NOTSTATIC(reflection_class_ptr);
- GET_REFLECTION_OBJECT_PTR(ce);
-
- if (ce->module) {
- RETURN_STRING(ce->module->name, 1);
- } else {
- RETURN_FALSE;
- }
-}
-/* }}} */
-
-/* {{{ proto public static mixed ReflectionObject::export(mixed argument [, bool return]) throws ReflectionException
- Exports a reflection object. Returns the output if TRUE is specified for return, printing it otherwise. */
-ZEND_METHOD(reflection_object, export)
-{
- _reflection_export(INTERNAL_FUNCTION_PARAM_PASSTHRU, reflection_object_ptr, 1);
-}
-/* }}} */
-
-/* {{{ proto public ReflectionObject::__construct(mixed argument) throws ReflectionException
- Constructor. Takes an instance as an argument */
-ZEND_METHOD(reflection_object, __construct)
-{
- reflection_class_object_ctor(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
-}
-/* }}} */
-
-/* {{{ proto public static mixed ReflectionProperty::export(mixed class, string name [, bool return]) throws ReflectionException
- Exports a reflection object. Returns the output if TRUE is specified for return, printing it otherwise. */
-ZEND_METHOD(reflection_property, export)
-{
- _reflection_export(INTERNAL_FUNCTION_PARAM_PASSTHRU, reflection_property_ptr, 2);
-}
-/* }}} */
-
-/* {{{ proto public ReflectionProperty::__construct(mixed class, string name)
- Constructor. Throws an Exception in case the given property does not exist */
-ZEND_METHOD(reflection_property, __construct)
-{
- zval *propname, *classname;
- char *name_str, *class_name, *prop_name;
- int name_len;
- zval *object;
- reflection_object *intern;
- zend_class_entry **pce;
- zend_class_entry *ce;
- zend_property_info *property_info;
- property_reference *reference;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zs", &classname, &name_str, &name_len) == FAILURE) {
- return;
- }
-
- object = getThis();
- intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
- if (intern == NULL) {
- return;
- }
-
- /* Find the class entry */
- switch (Z_TYPE_P(classname)) {
- case IS_STRING:
- if (zend_lookup_class(Z_STRVAL_P(classname), Z_STRLEN_P(classname), &pce TSRMLS_CC) == FAILURE) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Class %s does not exist", Z_STRVAL_P(classname));
- return;
- }
- ce = *pce;
- break;
-
- case IS_OBJECT:
- ce = Z_OBJCE_P(classname);
- break;
-
- default:
- _DO_THROW("The parameter class is expected to be either a string or an object");
- /* returns out of this function */
- }
-
- if (zend_hash_find(&ce->properties_info, name_str, name_len + 1, (void **) &property_info) == FAILURE || (property_info->flags & ZEND_ACC_SHADOW)) {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Property %s::$%s does not exist", ce->name, name_str);
- return;
- }
-
- if (!(property_info->flags & ZEND_ACC_PRIVATE)) {
- /* we have to seach the class hierarchy for this (implicit) public or protected property */
- zend_class_entry *tmp_ce = ce->parent;
- zend_property_info *tmp_info;
-
- while (tmp_ce && zend_hash_find(&tmp_ce->properties_info, name_str, name_len + 1, (void **) &tmp_info) == SUCCESS) {
- if (tmp_info->flags & ZEND_ACC_PRIVATE) {
- /* private in super class => NOT the same property */
- break;
- }
- ce = tmp_ce;
- property_info = tmp_info;
- tmp_ce = tmp_ce->parent;
- }
- }
-
- MAKE_STD_ZVAL(classname);
- ZVAL_STRINGL(classname, ce->name, ce->name_length, 1);
- zend_hash_update(Z_OBJPROP_P(object), "class", sizeof("class"), (void **) &classname, sizeof(zval *), NULL);
-
- zend_unmangle_property_name_ex(property_info->name, property_info->name_length, &class_name, &prop_name);
- MAKE_STD_ZVAL(propname);
- ZVAL_STRING(propname, prop_name, 1);
- zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &propname, sizeof(zval *), NULL);
-
- reference = (property_reference*) emalloc(sizeof(property_reference));
- reference->ce = ce;
- reference->prop = property_info;
- intern->ptr = reference;
- intern->free_ptr = 1;
- intern->ce = ce;
-}
-/* }}} */
-
-/* {{{ proto public string ReflectionProperty::__toString()
- Returns a string representation */
-ZEND_METHOD(reflection_property, __toString)
-{
- reflection_object *intern;
- property_reference *ref;
- string str;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ref);
- string_init(&str);
- _property_string(&str, ref->prop, NULL, "" TSRMLS_CC);
- RETURN_STRINGL(str.string, str.len - 1, 0);
-}
-/* }}} */
-
-/* {{{ proto public string ReflectionProperty::getName()
- Returns the class' name */
-ZEND_METHOD(reflection_property, getName)
-{
- METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
- _default_get_entry(getThis(), "name", sizeof("name"), return_value TSRMLS_CC);
-}
-/* }}} */
-
-static void _property_check_flag(INTERNAL_FUNCTION_PARAMETERS, int mask)
-{
- reflection_object *intern;
- property_reference *ref;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ref);
- RETURN_BOOL(ref->prop->flags & mask);
-}
-
-/* {{{ proto public bool ReflectionProperty::isPublic()
- Returns whether this property is public */
-ZEND_METHOD(reflection_property, isPublic)
-{
- _property_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_PUBLIC);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionProperty::isPrivate()
- Returns whether this property is private */
-ZEND_METHOD(reflection_property, isPrivate)
-{
- _property_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_PRIVATE);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionProperty::isProtected()
- Returns whether this property is protected */
-ZEND_METHOD(reflection_property, isProtected)
-{
- _property_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_PROTECTED);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionProperty::isStatic()
- Returns whether this property is static */
-ZEND_METHOD(reflection_property, isStatic)
-{
- _property_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_STATIC);
-}
-/* }}} */
-
-/* {{{ proto public bool ReflectionProperty::isDefault()
- Returns whether this property is default (declared at compilation time). */
-ZEND_METHOD(reflection_property, isDefault)
-{
- _property_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ~ZEND_ACC_IMPLICIT_PUBLIC);
-}
-/* }}} */
-
-/* {{{ proto public int ReflectionProperty::getModifiers()
- Returns a bitfield of the access modifiers for this property */
-ZEND_METHOD(reflection_property, getModifiers)
-{
- reflection_object *intern;
- property_reference *ref;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ref);
-
- RETURN_LONG(ref->prop->flags);
-}
-/* }}} */
-
-/* {{{ proto public mixed ReflectionProperty::getValue([stdclass object])
- Returns this property's value */
-ZEND_METHOD(reflection_property, getValue)
-{
- reflection_object *intern;
- property_reference *ref;
- zval *object;
- zval **member= NULL;
-
- METHOD_NOTSTATIC(reflection_property_ptr);
- GET_REFLECTION_OBJECT_PTR(ref);
-
- if (!(ref->prop->flags & ZEND_ACC_PUBLIC)) {
- _DO_THROW("Cannot access non-public member");
- /* Returns from this function */
- }
-
- if ((ref->prop->flags & ZEND_ACC_STATIC)) {
- zend_update_class_constants(intern->ce TSRMLS_CC);
- if (zend_hash_quick_find(intern->ce->static_members, ref->prop->name, ref->prop->name_length + 1, ref->prop->h, (void **) &member) == FAILURE) {
- zend_error(E_ERROR, "Internal error: Could not find the property %s", ref->prop->name);
- /* Bails out */
- }
- } else {
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &object) == FAILURE) {
- return;
- }
- if (zend_hash_quick_find(Z_OBJPROP_P(object), ref->prop->name, ref->prop->name_length + 1, ref->prop->h, (void **) &member) == FAILURE) {
- zend_error(E_ERROR, "Internal error: Could not find the property %s", ref->prop->name);
- /* Bails out */
- }
- }
-
- *return_value= **member;
- zval_copy_ctor(return_value);
- INIT_PZVAL(return_value);
-}
-/* }}} */
-
-/* {{{ proto public void ReflectionProperty::setValue([stdclass object,] mixed value)
- Sets this property's value */
-ZEND_METHOD(reflection_property, setValue)
-{
- reflection_object *intern;
- property_reference *ref;
- zval **variable_ptr;
- zval *object;
- zval *value;
- int setter_done = 0;
- zval *tmp;
- HashTable *prop_table;
-
- METHOD_NOTSTATIC(reflection_property_ptr);
- GET_REFLECTION_OBJECT_PTR(ref);
-
- if (ref->prop->flags & ~(ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)) {
- _DO_THROW("Cannot access non-public member");
- /* Returns from this function */
- }
-
- if ((ref->prop->flags & ZEND_ACC_STATIC)) {
- if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "z", &value) == FAILURE) {
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &tmp, &value) == FAILURE) {
- return;
- }
- }
- zend_update_class_constants(intern->ce TSRMLS_CC);
- prop_table = intern->ce->static_members;
- } else {
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "oz", &object, &value) == FAILURE) {
- return;
- }
- prop_table = Z_OBJPROP_P(object);
- }
-
- if (zend_hash_quick_find(prop_table, ref->prop->name, ref->prop->name_length + 1, ref->prop->h, (void **) &variable_ptr) == FAILURE) {
- zend_error(E_ERROR, "Internal error: Could not find the property %s", ref->prop->name);
- /* Bails out */
- }
- if (*variable_ptr == value) {
- setter_done = 1;
- } else {
- if (PZVAL_IS_REF(*variable_ptr)) {
- zval_dtor(*variable_ptr);
- (*variable_ptr)->type = value->type;
- (*variable_ptr)->value = value->value;
- if (value->refcount > 0) {
- zval_copy_ctor(*variable_ptr);
- }
- setter_done = 1;
- }
- }
- if (!setter_done) {
- zval **foo;
-
- value->refcount++;
- if (PZVAL_IS_REF(value)) {
- SEPARATE_ZVAL(&value);
- }
- zend_hash_quick_update(prop_table, ref->prop->name, ref->prop->name_length+1, ref->prop->h, &value, sizeof(zval *), (void **) &foo);
- }
-}
-/* }}} */
-
-/* {{{ proto public ReflectionClass ReflectionProperty::getDeclaringClass()
- Get the declaring class */
-ZEND_METHOD(reflection_property, getDeclaringClass)
-{
- reflection_object *intern;
- property_reference *ref;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ref);
-
- zend_reflection_class_factory(ref->ce, return_value TSRMLS_CC);
-}
-
-/* {{{ proto public string ReflectionProperty::getDocComment()
- Returns the doc comment for this property */
-ZEND_METHOD(reflection_property, getDocComment)
-{
- reflection_object *intern;
- property_reference *ref;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(ref);
- if (ref->prop->doc_comment) {
- RETURN_STRINGL(ref->prop->doc_comment, ref->prop->doc_comment_len, 1);
- }
- RETURN_FALSE;
-}
-/* }}} */
-/* {{{ proto public static mixed ReflectionExtension::export(string name [, bool return]) throws ReflectionException
- Exports a reflection object. Returns the output if TRUE is specified for return, printing it otherwise. */
-ZEND_METHOD(reflection_extension, export)
-{
- _reflection_export(INTERNAL_FUNCTION_PARAM_PASSTHRU, reflection_extension_ptr, 1);
-}
-/* }}} */
-
-/* {{{ proto public ReflectionExtension::__construct(string name)
- Constructor. Throws an Exception in case the given extension does not exist */
-ZEND_METHOD(reflection_extension, __construct)
-{
- zval *name;
- zval *object;
- char *lcname;
- reflection_object *intern;
- zend_module_entry *module;
- char *name_str;
- int name_len;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name_str, &name_len) == FAILURE) {
- return;
- }
-
- object = getThis();
- intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
- if (intern == NULL) {
- return;
- }
- lcname = do_alloca(name_len + 1);
- zend_str_tolower_copy(lcname, name_str, name_len);
- if (zend_hash_find(&module_registry, lcname, name_len + 1, (void **)&module) == FAILURE) {
- free_alloca(lcname);
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Extension %s does not exist", name_str);
- return;
- }
- free_alloca(lcname);
- MAKE_STD_ZVAL(name);
- ZVAL_STRING(name, module->name, 1);
- zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
- intern->ptr = module;
- intern->free_ptr = 0;
- intern->ce = NULL;
-}
-/* }}} */
-
-/* {{{ proto public string ReflectionExtension::__toString()
- Returns a string representation */
-ZEND_METHOD(reflection_extension, __toString)
-{
- reflection_object *intern;
- zend_module_entry *module;
- string str;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(module);
- string_init(&str);
- _extension_string(&str, module, "" TSRMLS_CC);
- RETURN_STRINGL(str.string, str.len - 1, 0);
-}
-/* }}} */
-
-/* {{{ proto public string ReflectionExtension::getName()
- Returns this extension's name */
-ZEND_METHOD(reflection_extension, getName)
-{
- METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
- _default_get_entry(getThis(), "name", sizeof("name"), return_value TSRMLS_CC);
-}
-/* }}} */
-
-/* {{{ proto public string ReflectionExtension::getVersion()
- Returns this extension's version */
-ZEND_METHOD(reflection_extension, getVersion)
-{
- reflection_object *intern;
- zend_module_entry *module;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(module);
-
- /* An extension does not necessarily have a version number */
- if (module->version == NO_VERSION_YET) {
- RETURN_NULL();
- } else {
- RETURN_STRING(module->version, 1);
- }
-}
-/* }}} */
-
-/* {{{ proto public ReflectionFunction[] ReflectionExtension::getFunctions()
- Returns an array of this extension's fuctions */
-ZEND_METHOD(reflection_extension, getFunctions)
-{
- reflection_object *intern;
- zend_module_entry *module;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(module);
-
- array_init(return_value);
- if (module->functions) {
- zval *function;
- zend_function *fptr;
- zend_function_entry *func = module->functions;
-
- /* Is there a better way of doing this? */
- while (func->fname) {
- if (zend_hash_find(EG(function_table), func->fname, strlen(func->fname) + 1, (void**) &fptr) == FAILURE) {
- zend_error(E_WARNING, "Internal error: Cannot find extension function %s in global function table", func->fname);
- continue;
- }
-
- ALLOC_ZVAL(function);
- reflection_function_factory(fptr, function TSRMLS_CC);
- add_assoc_zval_ex(return_value, func->fname, strlen(func->fname)+1, function);
- func++;
- }
- }
-}
-/* }}} */
-
-static int _addconstant(zend_constant *constant, int num_args, va_list args, zend_hash_key *hash_key)
-{
- zval *const_val;
- zval *retval = va_arg(args, zval*);
- int number = va_arg(args, int);
-
- if (number == constant->module_number) {
- ALLOC_ZVAL(const_val);
- *const_val = constant->value;
- zval_copy_ctor(const_val);
- INIT_PZVAL(const_val);
- add_assoc_zval_ex(retval, constant->name, constant->name_len, const_val);
- }
- return 0;
-}
-
-/* {{{ proto public array ReflectionExtension::getConstants()
- Returns an associative array containing this extension's constants and their values */
-ZEND_METHOD(reflection_extension, getConstants)
-{
- reflection_object *intern;
- zend_module_entry *module;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(module);
-
- array_init(return_value);
- zend_hash_apply_with_arguments(EG(zend_constants), (apply_func_args_t) _addconstant, 2, return_value, module->module_number);
-}
-/* }}} */
-
-/* {{{ _addinientry */
-static int _addinientry(zend_ini_entry *ini_entry, int num_args, va_list args, zend_hash_key *hash_key)
-{
- zval *retval = va_arg(args, zval*);
- int number = va_arg(args, int);
-
- if (number == ini_entry->module_number) {
- if (ini_entry->value) {
- add_assoc_stringl(retval, ini_entry->name, ini_entry->value, ini_entry->value_length, 1);
- } else {
- add_assoc_null(retval, ini_entry->name);
- }
- }
- return ZEND_HASH_APPLY_KEEP;
-}
-/* }}} */
-
-/* {{{ proto public array ReflectionExtension::getINIEntries()
- Returns an associative array containing this extension's INI entries and their values */
-ZEND_METHOD(reflection_extension, getINIEntries)
-{
- reflection_object *intern;
- zend_module_entry *module;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(module);
-
- array_init(return_value);
- zend_hash_apply_with_arguments(EG(ini_directives), (apply_func_args_t) _addinientry, 2, return_value, module->module_number);
-}
-/* }}} */
-
-/* {{{ add_extension_class */
-static int add_extension_class(zend_class_entry **pce, int num_args, va_list args, zend_hash_key *hash_key)
-{
- zval *class_array = va_arg(args, zval*), *zclass;
- struct _zend_module_entry *module = va_arg(args, struct _zend_module_entry*);
- int add_reflection_class = va_arg(args, int);
-
- if ((*pce)->module && !strcasecmp((*pce)->module->name, module->name)) {
- TSRMLS_FETCH();
- if (add_reflection_class) {
- ALLOC_ZVAL(zclass);
- zend_reflection_class_factory(*pce, zclass TSRMLS_CC);
- add_assoc_zval_ex(class_array, (*pce)->name, (*pce)->name_length + 1, zclass);
- } else {
- add_next_index_stringl(class_array, (*pce)->name, (*pce)->name_length, 1);
- }
- }
- return ZEND_HASH_APPLY_KEEP;
-}
-/* }}} */
-
-/* {{{ proto public ReflectionClass[] ReflectionExtension::getClasses()
- Returns an array containing ReflectionClass objects for all classes of this extension */
-ZEND_METHOD(reflection_extension, getClasses)
-{
- reflection_object *intern;
- zend_module_entry *module;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(module);
-
- array_init(return_value);
- zend_hash_apply_with_arguments(EG(class_table), (apply_func_args_t) add_extension_class, 3, return_value, module, 1 TSRMLS_CC);
-}
-/* }}} */
-
-/* {{{ proto public array ReflectionExtension::getClassNames()
- Returns an array containing all names of all classes of this extension */
-ZEND_METHOD(reflection_extension, getClassNames)
-{
- reflection_object *intern;
- zend_module_entry *module;
-
- METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
- GET_REFLECTION_OBJECT_PTR(module);
-
- array_init(return_value);
- zend_hash_apply_with_arguments(EG(class_table), (apply_func_args_t) add_extension_class, 3, return_value, module, 0 TSRMLS_CC);
-}
-/* }}} */
-
-/* {{{ method tables */
-static zend_function_entry reflection_exception_functions[] = {
- {NULL, NULL, NULL}
-};
-
-static zend_function_entry reflection_functions[] = {
- ZEND_ME(reflection, getModifierNames, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
- ZEND_ME(reflection, export, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
- {NULL, NULL, NULL}
-};
-
-static zend_function_entry reflector_functions[] = {
- ZEND_FENTRY(export, NULL, NULL, ZEND_ACC_STATIC|ZEND_ACC_ABSTRACT|ZEND_ACC_PUBLIC)
- ZEND_ABSTRACT_ME(reflector, __toString, NULL)
- {NULL, NULL, NULL}
-};
-
-static zend_function_entry reflection_function_functions[] = {
- ZEND_ME(reflection, __clone, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_FINAL)
- ZEND_ME(reflection_function, export, NULL, ZEND_ACC_STATIC|ZEND_ACC_PUBLIC)
- ZEND_ME(reflection_function, __construct, NULL, 0)
- ZEND_ME(reflection_function, __toString, NULL, 0)
- ZEND_ME(reflection_function, isInternal, NULL, 0)
- ZEND_ME(reflection_function, isUserDefined, NULL, 0)
- ZEND_ME(reflection_function, getName, NULL, 0)
- ZEND_ME(reflection_function, getFileName, NULL, 0)
- ZEND_ME(reflection_function, getStartLine, NULL, 0)
- ZEND_ME(reflection_function, getEndLine, NULL, 0)
- ZEND_ME(reflection_function, getDocComment, NULL, 0)
- ZEND_ME(reflection_function, getStaticVariables, NULL, 0)
- ZEND_ME(reflection_function, invoke, NULL, 0)
- ZEND_ME(reflection_function, invokeArgs, NULL, 0)
- ZEND_ME(reflection_function, returnsReference, NULL, 0)
- ZEND_ME(reflection_function, getParameters, NULL, 0)
- ZEND_ME(reflection_function, getNumberOfParameters, NULL, 0)
- ZEND_ME(reflection_function, getNumberOfRequiredParameters, NULL, 0)
- {NULL, NULL, NULL}
-};
-
-static zend_function_entry reflection_method_functions[] = {
- ZEND_ME(reflection_method, export, NULL, ZEND_ACC_STATIC|ZEND_ACC_PUBLIC)
- ZEND_ME(reflection_method, __construct, NULL, 0)
- ZEND_ME(reflection_method, __toString, NULL, 0)
- ZEND_ME(reflection_method, isPublic, NULL, 0)
- ZEND_ME(reflection_method, isPrivate, NULL, 0)
- ZEND_ME(reflection_method, isProtected, NULL, 0)
- ZEND_ME(reflection_method, isAbstract, NULL, 0)
- ZEND_ME(reflection_method, isFinal, NULL, 0)
- ZEND_ME(reflection_method, isStatic, NULL, 0)
- ZEND_ME(reflection_method, isConstructor, NULL, 0)
- ZEND_ME(reflection_method, isDestructor, NULL, 0)
- ZEND_ME(reflection_method, getModifiers, NULL, 0)
- ZEND_ME(reflection_method, invoke, NULL, 0)
- ZEND_ME(reflection_method, invokeArgs, NULL, 0)
- ZEND_ME(reflection_method, getDeclaringClass, NULL, 0)
- {NULL, NULL, NULL}
-};
-
-static zend_function_entry reflection_class_functions[] = {
- ZEND_ME(reflection, __clone, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_FINAL)
- ZEND_ME(reflection_class, export, NULL, ZEND_ACC_STATIC|ZEND_ACC_PUBLIC)
- ZEND_ME(reflection_class, __construct, NULL, 0)
- ZEND_ME(reflection_class, __toString, NULL, 0)
- ZEND_ME(reflection_class, getName, NULL, 0)
- ZEND_ME(reflection_class, isInternal, NULL, 0)
- ZEND_ME(reflection_class, isUserDefined, NULL, 0)
- ZEND_ME(reflection_class, isInstantiable, NULL, 0)
- ZEND_ME(reflection_class, getFileName, NULL, 0)
- ZEND_ME(reflection_class, getStartLine, NULL, 0)
- ZEND_ME(reflection_class, getEndLine, NULL, 0)
- ZEND_ME(reflection_class, getDocComment, NULL, 0)
- ZEND_ME(reflection_class, getConstructor, NULL, 0)
- ZEND_ME(reflection_class, hasMethod, NULL, 0)
- ZEND_ME(reflection_class, getMethod, NULL, 0)
- ZEND_ME(reflection_class, getMethods, NULL, 0)
- ZEND_ME(reflection_class, hasProperty, NULL, 0)
- ZEND_ME(reflection_class, getProperty, NULL, 0)
- ZEND_ME(reflection_class, getProperties, NULL, 0)
- ZEND_ME(reflection_class, hasConstant, NULL, 0)
- ZEND_ME(reflection_class, getConstants, NULL, 0)
- ZEND_ME(reflection_class, getConstant, NULL, 0)
- ZEND_ME(reflection_class, getInterfaces, NULL, 0)
- ZEND_ME(reflection_class, isInterface, NULL, 0)
- ZEND_ME(reflection_class, isAbstract, NULL, 0)
- ZEND_ME(reflection_class, isFinal, NULL, 0)
- ZEND_ME(reflection_class, getModifiers, NULL, 0)
- ZEND_ME(reflection_class, isInstance, NULL, 0)
- ZEND_ME(reflection_class, newInstance, NULL, 0)
- ZEND_ME(reflection_class, getParentClass, NULL, 0)
- ZEND_ME(reflection_class, isSubclassOf, NULL, 0)
- ZEND_ME(reflection_class, getStaticProperties, NULL, 0)
- ZEND_ME(reflection_class, getStaticPropertyValue, NULL, 0)
- ZEND_ME(reflection_class, setStaticPropertyValue, NULL, 0)
- ZEND_ME(reflection_class, getDefaultProperties, NULL, 0)
- ZEND_ME(reflection_class, isIterateable, NULL, 0)
- ZEND_ME(reflection_class, implementsInterface, NULL, 0)
- ZEND_ME(reflection_class, getExtension, NULL, 0)
- ZEND_ME(reflection_class, getExtensionName, NULL, 0)
- {NULL, NULL, NULL}
-};
-
-static zend_function_entry reflection_object_functions[] = {
- ZEND_ME(reflection_object, export, NULL, ZEND_ACC_STATIC|ZEND_ACC_PUBLIC)
- ZEND_ME(reflection_object, __construct, NULL, 0)
- {NULL, NULL, NULL}
-};
-
-static zend_function_entry reflection_property_functions[] = {
- ZEND_ME(reflection, __clone, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_FINAL)
- ZEND_ME(reflection_property, export, NULL, ZEND_ACC_STATIC|ZEND_ACC_PUBLIC)
- ZEND_ME(reflection_property, __construct, NULL, 0)
- ZEND_ME(reflection_property, __toString, NULL, 0)
- ZEND_ME(reflection_property, getName, NULL, 0)
- ZEND_ME(reflection_property, getValue, NULL, 0)
- ZEND_ME(reflection_property, setValue, NULL, 0)
- ZEND_ME(reflection_property, isPublic, NULL, 0)
- ZEND_ME(reflection_property, isPrivate, NULL, 0)
- ZEND_ME(reflection_property, isProtected, NULL, 0)
- ZEND_ME(reflection_property, isStatic, NULL, 0)
- ZEND_ME(reflection_property, isDefault, NULL, 0)
- ZEND_ME(reflection_property, getModifiers, NULL, 0)
- ZEND_ME(reflection_property, getDeclaringClass, NULL, 0)
- ZEND_ME(reflection_property, getDocComment, NULL, 0)
- {NULL, NULL, NULL}
-};
-
-static zend_function_entry reflection_parameter_functions[] = {
- ZEND_ME(reflection, __clone, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_FINAL)
- ZEND_ME(reflection_parameter, export, NULL, ZEND_ACC_STATIC|ZEND_ACC_PUBLIC)
- ZEND_ME(reflection_parameter, __construct, NULL, 0)
- ZEND_ME(reflection_parameter, __toString, NULL, 0)
- ZEND_ME(reflection_parameter, getName, NULL, 0)
- ZEND_ME(reflection_parameter, isPassedByReference, NULL, 0)
- ZEND_ME(reflection_parameter, getClass, NULL, 0)
- ZEND_ME(reflection_parameter, isArray, NULL, 0)
- ZEND_ME(reflection_parameter, allowsNull, NULL, 0)
- ZEND_ME(reflection_parameter, isOptional, NULL, 0)
- ZEND_ME(reflection_parameter, isDefaultValueAvailable, NULL, 0)
- ZEND_ME(reflection_parameter, getDefaultValue, NULL, 0)
- {NULL, NULL, NULL}
-};
-
-static zend_function_entry reflection_extension_functions[] = {
- ZEND_ME(reflection, __clone, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_FINAL)
- ZEND_ME(reflection_extension, export, NULL, ZEND_ACC_STATIC|ZEND_ACC_PUBLIC)
- ZEND_ME(reflection_extension, __construct, NULL, 0)
- ZEND_ME(reflection_extension, __toString, NULL, 0)
- ZEND_ME(reflection_extension, getName, NULL, 0)
- ZEND_ME(reflection_extension, getVersion, NULL, 0)
- ZEND_ME(reflection_extension, getFunctions, NULL, 0)
- ZEND_ME(reflection_extension, getConstants, NULL, 0)
- ZEND_ME(reflection_extension, getINIEntries, NULL, 0)
- ZEND_ME(reflection_extension, getClasses, NULL, 0)
- ZEND_ME(reflection_extension, getClassNames, NULL, 0)
- {NULL, NULL, NULL}
-};
-/* }}} */
-
-static zend_object_handlers *zend_std_obj_handlers;
-
-/* {{{ _reflection_write_property */
-static void _reflection_write_property(zval *object, zval *member, zval *value TSRMLS_DC)
-{
- if (Z_TYPE_P(member) == IS_STRING
- && zend_hash_exists(&Z_OBJCE_P(object)->default_properties, Z_STRVAL_P(member), Z_STRLEN_P(member)+1)
- && (!strcmp(Z_STRVAL_P(member), "name") || !strcmp(Z_STRVAL_P(member), "class")))
- {
- zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
- "Cannot set read-only property %s::$%s", Z_OBJCE_P(object)->name, Z_STRVAL_P(member));
- }
- else
- {
- zend_std_obj_handlers->write_property(object, member, value TSRMLS_CC);
- }
-}
-/* }}} */
-
-/* {{{ zend_register_reflection_api */
-ZEND_API void zend_register_reflection_api(TSRMLS_D) {
- zend_class_entry _reflection_entry;
-
- zend_std_obj_handlers = zend_get_std_object_handlers();
- memcpy(&reflection_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
- reflection_object_handlers.clone_obj = NULL;
- reflection_object_handlers.write_property = _reflection_write_property;
-
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionException", reflection_exception_functions);
- reflection_exception_ptr = zend_register_internal_class_ex(&_reflection_entry, zend_exception_get_default(), NULL TSRMLS_CC);
-
- INIT_CLASS_ENTRY(_reflection_entry, "Reflection", reflection_functions);
- reflection_ptr = zend_register_internal_class(&_reflection_entry TSRMLS_CC);
-
- INIT_CLASS_ENTRY(_reflection_entry, "Reflector", reflector_functions);
- reflector_ptr = zend_register_internal_class(&_reflection_entry TSRMLS_CC);
- reflector_ptr->ce_flags = ZEND_ACC_ABSTRACT | ZEND_ACC_INTERFACE;
-
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionFunction", reflection_function_functions);
- _reflection_entry.create_object = reflection_objects_new;
- reflection_function_ptr = zend_register_internal_class(&_reflection_entry TSRMLS_CC);
- reflection_register_implement(reflection_function_ptr, reflector_ptr TSRMLS_CC);
- zend_declare_property_string(reflection_function_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
-
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionParameter", reflection_parameter_functions);
- _reflection_entry.create_object = reflection_objects_new;
- reflection_parameter_ptr = zend_register_internal_class(&_reflection_entry TSRMLS_CC);
- reflection_register_implement(reflection_parameter_ptr, reflector_ptr TSRMLS_CC);
- zend_declare_property_string(reflection_parameter_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
-
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionMethod", reflection_method_functions);
- _reflection_entry.create_object = reflection_objects_new;
- reflection_method_ptr = zend_register_internal_class_ex(&_reflection_entry, reflection_function_ptr, NULL TSRMLS_CC);
- zend_declare_property_string(reflection_method_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
- zend_declare_property_string(reflection_method_ptr, "class", sizeof("class")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
-
- REGISTER_REFLECTION_CLASS_CONST_LONG(method, "STATIC", ZEND_ACC_STATIC);
- REGISTER_REFLECTION_CLASS_CONST_LONG(method, "PUBLIC", ZEND_ACC_PUBLIC);
- REGISTER_REFLECTION_CLASS_CONST_LONG(method, "PROTECTED", ZEND_ACC_PROTECTED);
- REGISTER_REFLECTION_CLASS_CONST_LONG(method, "PRIVATE", ZEND_ACC_PRIVATE);
- REGISTER_REFLECTION_CLASS_CONST_LONG(method, "ABSTRACT", ZEND_ACC_ABSTRACT);
- REGISTER_REFLECTION_CLASS_CONST_LONG(method, "FINAL", ZEND_ACC_FINAL);
-
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionClass", reflection_class_functions);
- _reflection_entry.create_object = reflection_objects_new;
- reflection_class_ptr = zend_register_internal_class(&_reflection_entry TSRMLS_CC);
- reflection_register_implement(reflection_class_ptr, reflector_ptr TSRMLS_CC);
- zend_declare_property_string(reflection_class_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
-
- REGISTER_REFLECTION_CLASS_CONST_LONG(class, "IMPLICIT_ABSTRACT", ZEND_ACC_IMPLICIT_ABSTRACT_CLASS);
- REGISTER_REFLECTION_CLASS_CONST_LONG(class, "EXPLICIT_ABSTRACT", ZEND_ACC_EXPLICIT_ABSTRACT_CLASS);
- REGISTER_REFLECTION_CLASS_CONST_LONG(class, "FINAL", ZEND_ACC_FINAL_CLASS);
-
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionObject", reflection_object_functions);
- _reflection_entry.create_object = reflection_objects_new;
- reflection_object_ptr = zend_register_internal_class_ex(&_reflection_entry, reflection_class_ptr, NULL TSRMLS_CC);
-
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionProperty", reflection_property_functions);
- _reflection_entry.create_object = reflection_objects_new;
- reflection_property_ptr = zend_register_internal_class(&_reflection_entry TSRMLS_CC);
- reflection_register_implement(reflection_property_ptr, reflector_ptr TSRMLS_CC);
- zend_declare_property_string(reflection_property_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
- zend_declare_property_string(reflection_property_ptr, "class", sizeof("class")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
-
- REGISTER_REFLECTION_CLASS_CONST_LONG(property, "STATIC", ZEND_ACC_STATIC);
- REGISTER_REFLECTION_CLASS_CONST_LONG(property, "PUBLIC", ZEND_ACC_PUBLIC);
- REGISTER_REFLECTION_CLASS_CONST_LONG(property, "PROTECTED", ZEND_ACC_PROTECTED);
- REGISTER_REFLECTION_CLASS_CONST_LONG(property, "PRIVATE", ZEND_ACC_PRIVATE);
-
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionExtension", reflection_extension_functions);
- _reflection_entry.create_object = reflection_objects_new;
- reflection_extension_ptr = zend_register_internal_class(&_reflection_entry TSRMLS_CC);
- reflection_register_implement(reflection_extension_ptr, reflector_ptr TSRMLS_CC);
- zend_declare_property_string(reflection_extension_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
-
- /* Property modifiers */
- REGISTER_MAIN_LONG_CONSTANT("P_STATIC", ZEND_ACC_STATIC, CONST_PERSISTENT|CONST_CS);
- REGISTER_MAIN_LONG_CONSTANT("P_PUBLIC", ZEND_ACC_PUBLIC, CONST_PERSISTENT|CONST_CS);
- REGISTER_MAIN_LONG_CONSTANT("P_PROTECTED", ZEND_ACC_PROTECTED, CONST_PERSISTENT|CONST_CS);
- REGISTER_MAIN_LONG_CONSTANT("P_PRIVATE", ZEND_ACC_PRIVATE, CONST_PERSISTENT|CONST_CS);
-
- /* Method modifiers */
- REGISTER_MAIN_LONG_CONSTANT("M_STATIC", ZEND_ACC_STATIC, CONST_PERSISTENT|CONST_CS);
- REGISTER_MAIN_LONG_CONSTANT("M_PUBLIC", ZEND_ACC_PUBLIC, CONST_PERSISTENT|CONST_CS);
- REGISTER_MAIN_LONG_CONSTANT("M_PROTECTED", ZEND_ACC_PROTECTED, CONST_PERSISTENT|CONST_CS);
- REGISTER_MAIN_LONG_CONSTANT("M_PRIVATE", ZEND_ACC_PRIVATE, CONST_PERSISTENT|CONST_CS);
- REGISTER_MAIN_LONG_CONSTANT("M_ABSTRACT", ZEND_ACC_ABSTRACT, CONST_PERSISTENT|CONST_CS);
- REGISTER_MAIN_LONG_CONSTANT("M_FINAL", ZEND_ACC_FINAL, CONST_PERSISTENT|CONST_CS);
-
- /* Class modifiers */
- REGISTER_MAIN_LONG_CONSTANT("C_IMPLICIT_ABSTRACT", ZEND_ACC_IMPLICIT_ABSTRACT_CLASS, CONST_PERSISTENT|CONST_CS);
- REGISTER_MAIN_LONG_CONSTANT("C_EXPLICIT_ABSTRACT", ZEND_ACC_EXPLICIT_ABSTRACT_CLASS, CONST_PERSISTENT|CONST_CS);
- REGISTER_MAIN_LONG_CONSTANT("C_FINAL", ZEND_ACC_FINAL_CLASS, CONST_PERSISTENT|CONST_CS);
-}
-/* }}} */
-
-/*
- * Local variables:
- * tab-width: 4
- * c-basic-offset: 4
- * indent-tabs-mode: t
- * End:
- */
diff --git a/Zend/zend_reflection_api.h b/Zend/zend_reflection_api.h
deleted file mode 100644
index 642c6ede7..000000000
--- a/Zend/zend_reflection_api.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- +----------------------------------------------------------------------+
- | Zend Engine |
- +----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
- +----------------------------------------------------------------------+
- | This source file is subject to version 2.00 of the Zend license, |
- | that is bundled with this package in the file LICENSE, and is |
- | available through the world-wide-web at the following url: |
- | http://www.zend.com/license/2_00.txt. |
- | If you did not receive a copy of the Zend license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@zend.com so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Authors: George Schlossnagle <george@omniti.com> |
- +----------------------------------------------------------------------+
-*/
-
-/* $Id: zend_reflection_api.h,v 1.4 2005/08/03 13:30:57 sniper Exp $ */
-
-#ifndef ZEND_REFLECTION_API_H
-#define ZEND_REFLECTION_API_H
-
-BEGIN_EXTERN_C()
-
-ZEND_API void zend_register_reflection_api(TSRMLS_D);
-ZEND_API void zend_reflection_class_factory(zend_class_entry *ce, zval *object TSRMLS_DC);
-
-END_EXTERN_C()
-
-#endif
-
-/*
- * Local variables:
- * tab-width: 4
- * c-basic-offset: 4
- * indent-tabs-mode: t
- * End:
- */
diff --git a/Zend/zend_sprintf.c b/Zend/zend_sprintf.c
index 7317c2ae2..ec04f128c 100644
--- a/Zend/zend_sprintf.c
+++ b/Zend/zend_sprintf.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_sprintf.c,v 1.16 2005/08/03 13:30:57 sniper Exp $ */
+/* $Id: zend_sprintf.c,v 1.16.2.1 2006/01/04 23:53:04 andi Exp $ */
#include <stdio.h>
diff --git a/Zend/zend_stack.c b/Zend/zend_stack.c
index d31a28734..30345324b 100644
--- a/Zend/zend_stack.c
+++ b/Zend/zend_stack.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_stack.c,v 1.16 2005/08/03 13:30:57 sniper Exp $ */
+/* $Id: zend_stack.c,v 1.16.2.1 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
#include "zend_stack.h"
diff --git a/Zend/zend_stack.h b/Zend/zend_stack.h
index e576fb431..b40d26746 100644
--- a/Zend/zend_stack.h
+++ b/Zend/zend_stack.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_stack.h,v 1.19 2005/08/03 13:30:57 sniper Exp $ */
+/* $Id: zend_stack.h,v 1.19.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_STACK_H
#define ZEND_STACK_H
diff --git a/Zend/zend_static_allocator.c b/Zend/zend_static_allocator.c
index 7808bed63..9e0f4e0f5 100644
--- a/Zend/zend_static_allocator.c
+++ b/Zend/zend_static_allocator.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_static_allocator.c,v 1.13 2005/08/03 13:30:57 sniper Exp $ */
+/* $Id: zend_static_allocator.c,v 1.13.2.1 2006/01/04 23:53:04 andi Exp $ */
#include "zend_static_allocator.h"
diff --git a/Zend/zend_static_allocator.h b/Zend/zend_static_allocator.h
index ed3507028..7b51dd953 100644
--- a/Zend/zend_static_allocator.h
+++ b/Zend/zend_static_allocator.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_static_allocator.h,v 1.13 2005/08/03 13:30:57 sniper Exp $ */
+/* $Id: zend_static_allocator.h,v 1.13.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_STATIC_ALLOCATOR_H
#define ZEND_STATIC_ALLOCATOR_H
diff --git a/Zend/zend_stream.c b/Zend/zend_stream.c
index de136c1a9..b56c045fa 100644
--- a/Zend/zend_stream.c
+++ b/Zend/zend_stream.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_stream.c,v 1.13 2005/08/03 13:30:57 sniper Exp $ */
+/* $Id: zend_stream.c,v 1.13.2.1 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
diff --git a/Zend/zend_stream.h b/Zend/zend_stream.h
index c41fadd30..90daf03b6 100644
--- a/Zend/zend_stream.h
+++ b/Zend/zend_stream.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_stream.h,v 1.8 2005/08/03 13:30:58 sniper Exp $ */
+/* $Id: zend_stream.h,v 1.8.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_STREAM_H
#define ZEND_STREAM_H
diff --git a/Zend/zend_strtod.h b/Zend/zend_strtod.h
index 01504facb..093417298 100644
--- a/Zend/zend_strtod.h
+++ b/Zend/zend_strtod.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_strtod.h,v 1.3 2005/08/03 13:30:58 sniper Exp $ */
+/* $Id: zend_strtod.h,v 1.3.2.1 2006/01/04 23:53:04 andi Exp $ */
/* This is a header file for the strtod implementation by David M. Gay which
* can be found in zend_strtod.c */
diff --git a/Zend/zend_ts_hash.c b/Zend/zend_ts_hash.c
index b98a7aa3a..5017f9cee 100644
--- a/Zend/zend_ts_hash.c
+++ b/Zend/zend_ts_hash.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_ts_hash.c,v 1.14 2005/08/03 13:30:58 sniper Exp $ */
+/* $Id: zend_ts_hash.c,v 1.14.2.1 2006/01/04 23:53:04 andi Exp $ */
#include "zend.h"
#include "zend_ts_hash.h"
diff --git a/Zend/zend_ts_hash.h b/Zend/zend_ts_hash.h
index 2863e46cc..5dfce0e48 100644
--- a/Zend/zend_ts_hash.h
+++ b/Zend/zend_ts_hash.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_ts_hash.h,v 1.13 2005/08/03 13:30:58 sniper Exp $ */
+/* $Id: zend_ts_hash.h,v 1.13.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_TS_HASH_H
#define ZEND_TS_HASH_H
diff --git a/Zend/zend_types.h b/Zend/zend_types.h
index 61ea408ab..52f113306 100644
--- a/Zend/zend_types.h
+++ b/Zend/zend_types.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_types.h,v 1.6 2005/08/03 13:30:58 sniper Exp $ */
+/* $Id: zend_types.h,v 1.6.2.2 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_TYPES_H
#define ZEND_TYPES_H
@@ -28,6 +28,14 @@ typedef unsigned int zend_uint;
typedef unsigned long zend_ulong;
typedef unsigned short zend_ushort;
+typedef unsigned int zend_object_handle;
+typedef struct _zend_object_handlers zend_object_handlers;
+
+typedef struct _zend_object_value {
+ zend_object_handle handle;
+ zend_object_handlers *handlers;
+} zend_object_value;
+
#endif /* ZEND_TYPES_H */
/*
diff --git a/Zend/zend_variables.c b/Zend/zend_variables.c
index e995394d7..5527bd822 100644
--- a/Zend/zend_variables.c
+++ b/Zend/zend_variables.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_variables.c,v 1.62 2005/08/03 13:30:58 sniper Exp $ */
+/* $Id: zend_variables.c,v 1.62.2.1 2006/01/04 23:53:04 andi Exp $ */
#include <stdio.h>
#include "zend.h"
diff --git a/Zend/zend_variables.h b/Zend/zend_variables.h
index d9197aa12..f682949b7 100644
--- a/Zend/zend_variables.h
+++ b/Zend/zend_variables.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_variables.h,v 1.34 2005/08/03 13:30:58 sniper Exp $ */
+/* $Id: zend_variables.h,v 1.34.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_VARIABLES_H
#define ZEND_VARIABLES_H
diff --git a/Zend/zend_vm.h b/Zend/zend_vm.h
index 26249712e..6a2de7aa2 100644
--- a/Zend/zend_vm.h
+++ b/Zend/zend_vm.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_vm.h,v 1.7 2005/08/03 13:30:58 sniper Exp $ */
+/* $Id: zend_vm.h,v 1.7.2.1 2006/01/04 23:53:04 andi Exp $ */
#ifndef ZEND_VM_H
#define ZEND_VM_H
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index 081dc2e5d..aba47b844 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_vm_def.h,v 1.59.2.19 2005/10/31 19:25:10 dmitry Exp $ */
+/* $Id: zend_vm_def.h,v 1.59.2.22 2006/01/04 23:53:04 andi Exp $ */
/* If you change this file, please regenerate the zend_vm_execute.h and
* zend_vm_opcodes.h files by running:
@@ -964,6 +964,11 @@ ZEND_VM_HELPER_EX(zend_fetch_var_address_helper, CONST|TMP|VAR|CV, ANY, int type
case ZEND_FETCH_STATIC:
zval_update_constant(retval, (void*) 1 TSRMLS_CC);
break;
+ case ZEND_FETCH_GLOBAL_LOCK:
+ if (OP1_TYPE == IS_VAR && !free_op1.var) {
+ PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
+ }
+ break;
}
}
@@ -2186,7 +2191,8 @@ ZEND_VM_HANDLER(106, ZEND_SEND_VAR_NO_REF, VAR|CV, ANY)
if ((!(opline->extended_value & ZEND_ARG_SEND_FUNCTION) ||
EX_T(opline->op1.u.var).var.fcall_returned_reference) &&
varptr != &EG(uninitialized_zval) &&
- (PZVAL_IS_REF(varptr) || varptr->refcount == 1)) {
+ (PZVAL_IS_REF(varptr) ||
+ (varptr->refcount == 1 && (OP1_TYPE == IS_CV || free_op1.var)))) {
varptr->is_ref = 1;
varptr->refcount++;
zend_ptr_stack_push(&EG(argument_stack), varptr);
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index d3affc42d..ef58b0d49 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -36,6 +36,10 @@ ZEND_API void execute(zend_op_array *op_array TSRMLS_DC)
zend_execute_data execute_data;
+ if (EG(exception)) {
+ return;
+ }
+
/* Initialize execute_data */
EX(fbc) = NULL;
EX(object) = NULL;
@@ -1364,7 +1368,7 @@ static int ZEND_PRINT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
static int zend_fetch_var_address_helper_SPEC_CONST(int type, ZEND_OPCODE_HANDLER_ARGS)
{
zend_op *opline = EX(opline);
-
+ zend_free_op free_op1;
zval *varname = &opline->op1.u.constant;
zval **retval;
zval tmp_varname;
@@ -1416,6 +1420,11 @@ static int zend_fetch_var_address_helper_SPEC_CONST(int type, ZEND_OPCODE_HANDLE
case ZEND_FETCH_STATIC:
zval_update_constant(retval, (void*) 1 TSRMLS_CC);
break;
+ case ZEND_FETCH_GLOBAL_LOCK:
+ if (IS_CONST == IS_VAR && !free_op1.var) {
+ PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
+ }
+ break;
}
}
@@ -3825,6 +3834,11 @@ static int zend_fetch_var_address_helper_SPEC_TMP(int type, ZEND_OPCODE_HANDLER_
case ZEND_FETCH_STATIC:
zval_update_constant(retval, (void*) 1 TSRMLS_CC);
break;
+ case ZEND_FETCH_GLOBAL_LOCK:
+ if (IS_TMP_VAR == IS_VAR && !free_op1.var) {
+ PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
+ }
+ break;
}
}
@@ -6727,6 +6741,11 @@ static int zend_fetch_var_address_helper_SPEC_VAR(int type, ZEND_OPCODE_HANDLER_
case ZEND_FETCH_STATIC:
zval_update_constant(retval, (void*) 1 TSRMLS_CC);
break;
+ case ZEND_FETCH_GLOBAL_LOCK:
+ if (IS_VAR == IS_VAR && !free_op1.var) {
+ PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
+ }
+ break;
}
}
@@ -7057,7 +7076,8 @@ static int ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
if ((!(opline->extended_value & ZEND_ARG_SEND_FUNCTION) ||
EX_T(opline->op1.u.var).var.fcall_returned_reference) &&
varptr != &EG(uninitialized_zval) &&
- (PZVAL_IS_REF(varptr) || varptr->refcount == 1)) {
+ (PZVAL_IS_REF(varptr) ||
+ (varptr->refcount == 1 && (IS_VAR == IS_CV || free_op1.var)))) {
varptr->is_ref = 1;
varptr->refcount++;
zend_ptr_stack_push(&EG(argument_stack), varptr);
@@ -18777,7 +18797,7 @@ static int ZEND_PRINT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
static int zend_fetch_var_address_helper_SPEC_CV(int type, ZEND_OPCODE_HANDLER_ARGS)
{
zend_op *opline = EX(opline);
-
+ zend_free_op free_op1;
zval *varname = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
zval **retval;
zval tmp_varname;
@@ -18829,6 +18849,11 @@ static int zend_fetch_var_address_helper_SPEC_CV(int type, ZEND_OPCODE_HANDLER_A
case ZEND_FETCH_STATIC:
zval_update_constant(retval, (void*) 1 TSRMLS_CC);
break;
+ case ZEND_FETCH_GLOBAL_LOCK:
+ if (IS_CV == IS_VAR && !free_op1.var) {
+ PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
+ }
+ break;
}
}
@@ -19139,7 +19164,7 @@ static int zend_send_by_var_helper_SPEC_CV(ZEND_OPCODE_HANDLER_ARGS)
static int ZEND_SEND_VAR_NO_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
zend_op *opline = EX(opline);
-
+ zend_free_op free_op1;
zval *varptr;
if (opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) { /* Had function_ptr at compile_time */
@@ -19154,7 +19179,8 @@ static int ZEND_SEND_VAR_NO_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
if ((!(opline->extended_value & ZEND_ARG_SEND_FUNCTION) ||
EX_T(opline->op1.u.var).var.fcall_returned_reference) &&
varptr != &EG(uninitialized_zval) &&
- (PZVAL_IS_REF(varptr) || varptr->refcount == 1)) {
+ (PZVAL_IS_REF(varptr) ||
+ (varptr->refcount == 1 && (IS_CV == IS_CV || free_op1.var)))) {
varptr->is_ref = 1;
varptr->refcount++;
zend_ptr_stack_push(&EG(argument_stack), varptr);
diff --git a/Zend/zend_vm_execute.skl b/Zend/zend_vm_execute.skl
index 6cfd1bbcd..9a3bd5038 100644
--- a/Zend/zend_vm_execute.skl
+++ b/Zend/zend_vm_execute.skl
@@ -7,6 +7,10 @@ ZEND_API void {%EXECUTOR_NAME%}(zend_op_array *op_array TSRMLS_DC)
{%INTERNAL_LABELS%}
+ if (EG(exception)) {
+ return;
+ }
+
/* Initialize execute_data */
EX(fbc) = NULL;
EX(object) = NULL;
diff --git a/Zend/zend_vm_gen.php b/Zend/zend_vm_gen.php
index 0d4686e46..04f544001 100644
--- a/Zend/zend_vm_gen.php
+++ b/Zend/zend_vm_gen.php
@@ -3,7 +3,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -16,7 +16,7 @@
| Authors: Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
- $Id: zend_vm_gen.php,v 1.12.2.2 2005/11/26 06:22:14 rasmus Exp $
+ $Id: zend_vm_gen.php,v 1.12.2.4 2006/01/04 23:53:05 andi Exp $
*/
$header_text = <<< DATA
@@ -24,7 +24,7 @@ $header_text = <<< DATA
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -1077,7 +1077,7 @@ function gen_vm($def, $skel) {
fputs($f,"#define $op $code\n");
}
fclose($f);
- echo "zend_vm_opcodes.h generated succesfully.\n";
+ echo "zend_vm_opcodes.h generated successfully.\n";
// Generate zend_vm_execute.h
$f = fopen("zend_vm_execute.h", "w+") or die("ERROR: Cannot create zend_vm_execute.h\n");
@@ -1217,7 +1217,7 @@ function gen_vm($def, $skel) {
}
fclose($f);
- echo "zend_vm_execute.h generated succesfully.\n";
+ echo "zend_vm_execute.h generated successfully.\n";
}
function usage() {
diff --git a/Zend/zend_vm_opcodes.h b/Zend/zend_vm_opcodes.h
index 0eb22c42a..31f17e1b7 100644
--- a/Zend/zend_vm_opcodes.h
+++ b/Zend/zend_vm_opcodes.h
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
- | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
+ | Copyright (c) 1998-2006 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |