gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] /srv/bzr/gnash/trunk r10481: merge latest cygnal changes


From: rob
Subject: [Gnash-commit] /srv/bzr/gnash/trunk r10481: merge latest cygnal changes from rtmp branch.
Date: Fri, 26 Dec 2008 11:55:58 -0700
User-agent: Bazaar (1.5)

------------------------------------------------------------
revno: 10481
committer: address@hidden
branch nick: trunk
timestamp: Fri 2008-12-26 11:55:58 -0700
message:
  merge latest cygnal changes from rtmp branch.
added:
  cygnal/testsuite/cygnal.all/bindata/
  cygnal/testsuite/cygnal.all/bindata/README
  cygnal/testsuite/cygnal.all/bindata/array1-request.bin
  cygnal/testsuite/cygnal.all/bindata/array1-response.bin
  cygnal/testsuite/cygnal.all/bindata/array2-request.bin
  cygnal/testsuite/cygnal.all/bindata/array2-response.bin
  cygnal/testsuite/cygnal.all/bindata/array3-request.bin
  cygnal/testsuite/cygnal.all/bindata/array3-response.bin
  cygnal/testsuite/cygnal.all/bindata/array4-request.bin
  cygnal/testsuite/cygnal.all/bindata/array4-response.bin
  cygnal/testsuite/cygnal.all/bindata/array5-request.bin
  cygnal/testsuite/cygnal.all/bindata/array5-response.bin
  cygnal/testsuite/cygnal.all/bindata/array6-request.bin
  cygnal/testsuite/cygnal.all/bindata/array6-response.bin
  cygnal/testsuite/cygnal.all/bindata/array7-request.bin
  cygnal/testsuite/cygnal.all/bindata/array7-response.bin
  cygnal/testsuite/cygnal.all/bindata/bool-false-response.bin
  cygnal/testsuite/cygnal.all/bindata/bool-true-response.bin
  cygnal/testsuite/cygnal.all/bindata/custom-class1-request.bin
  cygnal/testsuite/cygnal.all/bindata/custom-class1-response.bin
  cygnal/testsuite/cygnal.all/bindata/custom-class2-request.bin
  cygnal/testsuite/cygnal.all/bindata/custom-class2-response.bin
  cygnal/testsuite/cygnal.all/bindata/date1-request.bin
  cygnal/testsuite/cygnal.all/bindata/date1-response.bin
  cygnal/testsuite/cygnal.all/bindata/date2-request.bin
  cygnal/testsuite/cygnal.all/bindata/date2-response.bin
  cygnal/testsuite/cygnal.all/bindata/echo-bool-false.bin
  cygnal/testsuite/cygnal.all/bindata/echo-bool-true.bin
  cygnal/testsuite/cygnal.all/bindata/echo-number1.bin
  cygnal/testsuite/cygnal.all/bindata/echo-string.bin
  cygnal/testsuite/cygnal.all/bindata/echo1-request.bin
  cygnal/testsuite/cygnal.all/bindata/echo1-response.bin
  cygnal/testsuite/cygnal.all/bindata/echo2-request.bin
  cygnal/testsuite/cygnal.all/bindata/echo2-response.bin
  cygnal/testsuite/cygnal.all/bindata/echo3-request.bin
  cygnal/testsuite/cygnal.all/bindata/echo3-response.bin
  cygnal/testsuite/cygnal.all/bindata/echo4-1-request.bin
  cygnal/testsuite/cygnal.all/bindata/echo4-1-response.bin
  cygnal/testsuite/cygnal.all/bindata/echo4-2-request.bin
  cygnal/testsuite/cygnal.all/bindata/echo4-2-response.bin
  cygnal/testsuite/cygnal.all/bindata/echo4-3-request.bin
  cygnal/testsuite/cygnal.all/bindata/echo4-3-response.bin
  cygnal/testsuite/cygnal.all/bindata/null-request.bin
  cygnal/testsuite/cygnal.all/bindata/null-response.bin
  cygnal/testsuite/cygnal.all/bindata/number1-request.bin
  cygnal/testsuite/cygnal.all/bindata/number1-response.bin
  cygnal/testsuite/cygnal.all/bindata/number10-request.bin
  cygnal/testsuite/cygnal.all/bindata/number10-response.bin
  cygnal/testsuite/cygnal.all/bindata/number11-request.bin
  cygnal/testsuite/cygnal.all/bindata/number11-response.bin
  cygnal/testsuite/cygnal.all/bindata/number12-request.bin
  cygnal/testsuite/cygnal.all/bindata/number12-response.bin
  cygnal/testsuite/cygnal.all/bindata/number13-request.bin
  cygnal/testsuite/cygnal.all/bindata/number13-response.bin
  cygnal/testsuite/cygnal.all/bindata/number14-request.bin
  cygnal/testsuite/cygnal.all/bindata/number14-response.bin
  cygnal/testsuite/cygnal.all/bindata/number15-request.bin
  cygnal/testsuite/cygnal.all/bindata/number15-response.bin
  cygnal/testsuite/cygnal.all/bindata/number16-request.bin
  cygnal/testsuite/cygnal.all/bindata/number16-response.bin
  cygnal/testsuite/cygnal.all/bindata/number2-request.bin
  cygnal/testsuite/cygnal.all/bindata/number2-response.bin
  cygnal/testsuite/cygnal.all/bindata/number3-request.bin
  cygnal/testsuite/cygnal.all/bindata/number3-response.bin
  cygnal/testsuite/cygnal.all/bindata/number4-request.bin
  cygnal/testsuite/cygnal.all/bindata/number4-response.bin
  cygnal/testsuite/cygnal.all/bindata/number5-request.bin
  cygnal/testsuite/cygnal.all/bindata/number5-response.bin
  cygnal/testsuite/cygnal.all/bindata/number6-request.bin
  cygnal/testsuite/cygnal.all/bindata/number6-response.bin
  cygnal/testsuite/cygnal.all/bindata/number7-request.bin
  cygnal/testsuite/cygnal.all/bindata/number7-response.bin
  cygnal/testsuite/cygnal.all/bindata/number8-request.bin
  cygnal/testsuite/cygnal.all/bindata/number8-response.bin
  cygnal/testsuite/cygnal.all/bindata/number9-request.bin
  cygnal/testsuite/cygnal.all/bindata/number9-response.bin
  cygnal/testsuite/cygnal.all/bindata/object1-request.bin
  cygnal/testsuite/cygnal.all/bindata/object1-responses.bin
  cygnal/testsuite/cygnal.all/bindata/object2-request.bin
  cygnal/testsuite/cygnal.all/bindata/object2-response.bin
  cygnal/testsuite/cygnal.all/bindata/remote-class1-request.bin
  cygnal/testsuite/cygnal.all/bindata/remote-class1-response.bin
  cygnal/testsuite/cygnal.all/bindata/remote-class2-request.bin
  cygnal/testsuite/cygnal.all/bindata/remote-class2-response.bin
  cygnal/testsuite/cygnal.all/bindata/remote-class3-request.bin
  cygnal/testsuite/cygnal.all/bindata/remote-class3-response.bin
  cygnal/testsuite/cygnal.all/bindata/remote-class4-request.bin
  cygnal/testsuite/cygnal.all/bindata/remote-class4-response.bin
  cygnal/testsuite/cygnal.all/bindata/undefined-request.bin
  cygnal/testsuite/cygnal.all/bindata/undefined-response.bin
modified:
  cygnal/README
  cygnal/testsuite/cygnal.all/Makefile.am
  cygnal/testsuite/cygnal.exp
  libamf/amf.cpp
  libamf/amf.h
  libamf/amfutf8.h
  libamf/buffer.cpp
  libamf/buffer.h
  libamf/element.cpp
  libamf/element.h
  libamf/flv.cpp
  libamf/flv.h
  libamf/lcshm.cpp
  libamf/lcshm.h
  libamf/sol.cpp
  libamf/sol.h
  libcore/asobj/SharedObject_as.cpp
  libmedia/FLVParser.cpp
  libnet/cque.cpp
  libnet/cque.h
  libnet/handler.cpp
  libnet/handler.h
  libnet/http.cpp
  libnet/http.h
  libnet/network.h
  libnet/rtmp.cpp
  libnet/rtmp.h
  libnet/rtmp_client.cpp
  libnet/rtmp_msg.h
  libnet/rtmp_server.cpp
  testsuite/libamf.all/test_amf.cpp
  testsuite/libamf.all/test_buffer.cpp
  testsuite/libamf.all/test_el.cpp
  testsuite/libnet.all/test_cque.cpp
  testsuite/libnet.all/test_http.cpp
  utilities/flvdumper.cpp
    ------------------------------------------------------------
    revno: 9483.4.191
    committer: address@hidden
    branch nick: rtmp
    timestamp: Wed 2008-12-17 20:40:16 -0700
    message:
      merge from trunk.
    removed:
      libcore/parser/bitmap_character_def.cpp
      libcore/parser/bitmap_character_def.h
    added:
      libcore/Bitmap.cpp
      libcore/Bitmap.h
      testsuite/misc-ming.all/easysound.as
      testsuite/misc-ming.all/remoting.README
      testsuite/misc-ming.all/remoting.as
      testsuite/misc-ming.all/remoting.php
      testsuite/misc-ming.all/widgets.as
    renamed:
      libcore/asobj/NetConnection.cpp => libcore/asobj/NetConnection_as.cpp
      libcore/asobj/NetConnection.h => libcore/asobj/NetConnection_as.h
      libcore/asobj/Selection.cpp => libcore/asobj/Selection_as.cpp
      libcore/asobj/Selection.h => libcore/asobj/Selection_as.h
      libcore/bitmap_info.h => libcore/BitmapInfo.h
    modified:
      Makefile.am
      backend/render_handler.h
      backend/render_handler_agg.cpp
      backend/render_handler_agg_bitmap.h
      backend/render_handler_agg_style.h
      backend/render_handler_cairo.cpp
      backend/render_handler_ogl.cpp
      backend/render_handler_ogl.h
      configure.ac
      cygnal/README
      gui/gui.cpp
      libamf/sol.cpp
      libamf/sol.h
      libbase/GnashImage.cpp
      libbase/URL.h
      libbase/curl_adapter.cpp
      libbase/log.h
      libcore/BitmapMovieInstance.cpp
      libcore/BitmapMovieInstance.h
      libcore/Button.cpp
      libcore/Button.h
      libcore/DisplayList.cpp
      libcore/DisplayList.h
      libcore/DynamicShape.h
      libcore/Font.cpp
      libcore/FreetypeGlyphsProvider.h
      libcore/Makefile.am
      libcore/MovieClip.cpp
      libcore/MovieClip.h
      libcore/Property.cpp
      libcore/Property.h
      libcore/PropertyList.cpp
      libcore/PropertyList.h
      libcore/SWFStream.cpp
      libcore/TextField.cpp
      libcore/TextField.h
      libcore/array.cpp
      libcore/array.h
      libcore/as_environment.cpp
      libcore/as_environment.h
      libcore/as_function.h
      libcore/as_object.cpp
      libcore/as_object.h
      libcore/as_prop_flags.h
      libcore/as_value.cpp
      libcore/as_value.h
      libcore/asobj/AsBroadcaster.cpp
      libcore/asobj/AsBroadcaster.h
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/ClassHierarchy.h
      libcore/asobj/Global.cpp
      libcore/asobj/Key_as.cpp
      libcore/asobj/Key_as.h
      libcore/asobj/LoadVars_as.cpp
      libcore/asobj/LoadableObject.cpp
      libcore/asobj/LoadableObject.h
      libcore/asobj/LocalConnection.cpp
      libcore/asobj/LocalConnection.h
      libcore/asobj/Makefile.am
      libcore/asobj/NetStream_as.cpp
      libcore/asobj/NetStream_as.h
      libcore/asobj/Object.cpp
      libcore/asobj/Object.h
      libcore/asobj/SharedObject.cpp
      libcore/asobj/SharedObject.h
      libcore/asobj/Sound.cpp
      libcore/asobj/Sound.h
      libcore/asobj/String_as.cpp
      libcore/asobj/String_as.h
      libcore/asobj/XMLNode_as.cpp
      libcore/asobj/XMLNode_as.h
      libcore/asobj/XMLSocket_as.cpp
      libcore/asobj/XML_as.cpp
      libcore/asobj/XML_as.h
      libcore/asobj/flash/display/BitmapData_as.cpp
      libcore/asobj/flash/display/BitmapData_as.h
      libcore/character.cpp
      libcore/character.h
      libcore/event_id.h
      libcore/fill_style.cpp
      libcore/fill_style.h
      libcore/generic_character.cpp
      libcore/generic_character.h
      libcore/impl.cpp
      libcore/movie_root.cpp
      libcore/movie_root.h
      libcore/namedStrings.cpp
      libcore/namedStrings.h
      libcore/parser/BitmapMovieDefinition.cpp
      libcore/parser/BitmapMovieDefinition.h
      libcore/parser/Makefile.am
      libcore/parser/SWFMovieDefinition.cpp
      libcore/parser/SWFMovieDefinition.h
      libcore/parser/morph2_character_def.cpp
      libcore/parser/movie_definition.h
      libcore/parser/sprite_definition.h
      libcore/render.cpp
      libcore/render.h
      libcore/styles.cpp
      libcore/styles.h
      libcore/swf/PlaceObject2Tag.cpp
      libcore/swf/PlaceObject2Tag.h
      libcore/swf/TextRecord.cpp
      libcore/swf/tag_loaders.cpp
      libcore/vm/ASHandlers.cpp
      libcore/vm/with_stack_entry.h
      libmedia/MediaParser.h
      libmedia/ffmpeg/MediaParserFfmpeg.cpp
      libmedia/gst/MediaParserGst.cpp
      libnet/http.h
      plugin/plugin.cpp
      plugin/plugin.h
      testsuite/DummyMovieDefinition.h
      testsuite/actionscript.all/ASnative.as
      testsuite/actionscript.all/AsBroadcaster.as
      testsuite/actionscript.all/LocalConnection.as
      testsuite/actionscript.all/Makefile.am
      testsuite/actionscript.all/MovieClip.as
      testsuite/actionscript.all/NetConnection.as
      testsuite/actionscript.all/Object.as
      testsuite/actionscript.all/Selection.as
      testsuite/actionscript.all/SharedObject.as
      testsuite/actionscript.all/array.as
      testsuite/gnashrc.in
      testsuite/libcore.all/as_prop_flagsTest.cpp
      testsuite/misc-ming.all/ButtonEventsTest.c
      testsuite/misc-ming.all/DefineEditTextTest.c
      testsuite/misc-ming.all/Makefile.am
      testsuite/misc-ming.all/NetStream-SquareTest.c
      testsuite/misc-ming.all/RollOverOutTest-Runner.cpp
      testsuite/misc-ming.all/SharedObjectTest.as
      testsuite/misc-ming.all/SharedObjectTest.sol/sol1.sol
      testsuite/misc-ming.all/SharedObjectTestRunner.sh
      testsuite/misc-swfc.all/swf4opcode.sc
      testsuite/swfdec/Makefile.am
      testsuite/swfdec/PASSING
      libcore/asobj/NetConnection_as.cpp
      libcore/asobj/NetConnection_as.h
      libcore/asobj/Selection_as.cpp
      libcore/asobj/Selection_as.h
      libcore/BitmapInfo.h
    ------------------------------------------------------------
    revno: 9483.4.192
    committer: address@hidden
    branch nick: rtmp
    timestamp: Thu 2008-12-18 10:32:22 -0700
    message:
      fix test for parsing red5 echo_test packets.
    modified:
      testsuite/libnet.all/test_http.cpp
    ------------------------------------------------------------
    revno: 9483.4.193
    committer: address@hidden
    branch nick: rtmp
    timestamp: Thu 2008-12-18 10:32:49 -0700
    message:
      minor typo corrections.
    modified:
      libamf/element.cpp
    ------------------------------------------------------------
    revno: 9483.4.194
    committer: address@hidden
    branch nick: rtmp
    timestamp: Thu 2008-12-18 10:33:31 -0700
    message:
      properly parse the red5 echo_test messages into Elements.
    modified:
      libnet/http.cpp
      libnet/http.h
    ------------------------------------------------------------
    revno: 9483.4.195
    committer: address@hidden
    branch nick: rtmp
    timestamp: Thu 2008-12-18 11:48:18 -0700
    message:
      add test case for formatting the reponse for the red5 echo_test.
    modified:
      testsuite/libnet.all/test_http.cpp
    ------------------------------------------------------------
    revno: 9483.4.196
    committer: address@hidden
    branch nick: rtmp
    timestamp: Thu 2008-12-18 11:48:48 -0700
    message:
      add support for properly creating the response packet for the red5 
echo_test.
    modified:
      libnet/http.cpp
      libnet/http.h
    ------------------------------------------------------------
    revno: 9483.4.197
    committer: address@hidden
    branch nick: rtmp
    timestamp: Fri 2008-12-19 10:09:58 -0700
    message:
      add more binary test cases grabbed by sniffing the red5 echo_test port. 
These
      primarily exercise AMF0 decoding on the server side for now.
    modified:
      testsuite/libnet.all/test_http.cpp
    ------------------------------------------------------------
    revno: 9483.4.198
    committer: address@hidden
    branch nick: rtmp
    timestamp: Fri 2008-12-19 10:11:21 -0700
    message:
      clean temporary fooBar* files too.
    modified:
      testsuite/libnet.all/Makefile.am
    ------------------------------------------------------------
    revno: 9483.4.199
    committer: address@hidden
    branch nick: rtmp
    timestamp: Fri 2008-12-19 10:12:06 -0700
    message:
      Parse NULL and UNDEFINED AMF0 objects too.
    modified:
      libamf/amf.cpp
    ------------------------------------------------------------
    revno: 9483.4.200
    committer: address@hidden
    branch nick: rtmp
    timestamp: Sat 2008-12-20 10:11:55 -0700
    message:
      switch to boost::uint8_t from Network::byte_t.
    modified:
      libamf/amf.cpp
      libamf/amf.h
      libamf/amfutf8.h
      libamf/buffer.cpp
      libamf/buffer.h
      libamf/element.cpp
      libamf/element.h
      libamf/flv.cpp
      libamf/flv.h
      libamf/lcshm.cpp
      libamf/lcshm.h
      libamf/sol.cpp
      libamf/sol.h
      libcore/asobj/SharedObject.cpp
      libmedia/FLVParser.cpp
      libnet/cque.cpp
      libnet/cque.h
      libnet/handler.cpp
      libnet/handler.h
      libnet/http.cpp
      libnet/http.h
      libnet/network.h
      libnet/rtmp.cpp
      libnet/rtmp.h
      libnet/rtmp_client.cpp
      libnet/rtmp_msg.h
      libnet/rtmp_server.cpp
      utilities/flvdumper.cpp
    ------------------------------------------------------------
    revno: 9483.4.201
    committer: address@hidden
    branch nick: rtmp
    timestamp: Sat 2008-12-20 11:56:34 -0700
    message:
      add tests for more request messages, mark some as unresolved, as they 
found bugs.
    modified:
      testsuite/libnet.all/test_http.cpp
    ------------------------------------------------------------
    revno: 9483.4.202
    committer: address@hidden
    branch nick: rtmp
    timestamp: Sat 2008-12-20 13:31:48 -0700
    message:
      initialize as an empty Date class.
      add end of line when dumping if there is no data.
    modified:
      libamf/element.cpp
    ------------------------------------------------------------
    revno: 9483.4.203
    committer: address@hidden
    branch nick: rtmp
    timestamp: Sat 2008-12-20 13:43:09 -0700
    message:
      initialize all data types, whether they have data or not.
      parse Strict Arrays much better, works for all data types now.
    modified:
      libamf/amf.cpp
    ------------------------------------------------------------
    revno: 9483.4.204
    committer: address@hidden
    branch nick: rtmp
    timestamp: Sat 2008-12-20 13:44:19 -0700
    message:
      less verbose on ::resize().
    modified:
      libamf/buffer.cpp
    ------------------------------------------------------------
    revno: 9483.4.205
    committer: address@hidden
    branch nick: rtmp
    timestamp: Sat 2008-12-20 13:44:51 -0700
    message:
      less verbose for parseEchoRequest.
    modified:
      libnet/http.cpp
    ------------------------------------------------------------
    revno: 9483.4.206
    committer: address@hidden
    branch nick: rtmp
    timestamp: Sat 2008-12-20 13:45:34 -0700
    message:
      fix Date test.
      resolved all unresolved tests, fixing bugs in code code where found.
      improve array tests, check the item values as well to be 100% sure.
    modified:
      testsuite/libnet.all/test_http.cpp
    ------------------------------------------------------------
    revno: 9483.4.207
    committer: address@hidden
    branch nick: rtmp
    timestamp: Sat 2008-12-20 14:03:35 -0700
    message:
      improve more array tests by checking the items too.
    modified:
      testsuite/libnet.all/test_http.cpp
    ------------------------------------------------------------
    revno: 9483.4.208
    committer: address@hidden
    branch nick: rtmp
    timestamp: Sat 2008-12-20 18:55:56 -0700
    message:
      NETBUFSIZE is in amf namespace now.
    modified:
      testsuite/libamf.all/test_buffer.cpp
      testsuite/libnet.all/test_cque.cpp
    ------------------------------------------------------------
    revno: 9483.4.209
    committer: address@hidden
    branch nick: rtmp
    timestamp: Sun 2008-12-21 09:46:15 -0700
    message:
      add tests for formatEchoResponse(), even though most of them need 
tweaking still.
    modified:
      testsuite/libnet.all/test_http.cpp
    ------------------------------------------------------------
    revno: 9483.4.210
    committer: address@hidden
    branch nick: rtmp
    timestamp: Sun 2008-12-21 09:47:09 -0700
    message:
      encodeStrictArray from an Element, not a pointer to raw data.
    modified:
      libamf/amf.h
    ------------------------------------------------------------
    revno: 9483.4.211
    committer: address@hidden
    branch nick: rtmp
    timestamp: Sun 2008-12-21 09:47:43 -0700
    message:
      fix data encoding.decoding, it's just another number with a different 
type.
    modified:
      libamf/amf.cpp
    ------------------------------------------------------------
    revno: 9483.4.212
    committer: address@hidden
    branch nick: rtmp
    timestamp: Sun 2008-12-21 09:48:24 -0700
    message:
      return a NULL object when receiving an UNSUPPORTED one as data like red5 
does.
    modified:
      libnet/http.cpp
    ------------------------------------------------------------
    revno: 9483.4.213
    committer: address@hidden
    branch nick: rtmp
    timestamp: Sun 2008-12-21 09:49:16 -0700
    message:
      don't pass the size.
    modified:
      libamf/element.h
    ------------------------------------------------------------
    revno: 9483.4.214
    committer: address@hidden
    branch nick: rtmp
    timestamp: Sun 2008-12-21 09:49:55 -0700
    message:
      use an exception if the buffer isn't large enough.
    modified:
      libamf/element.cpp
    ------------------------------------------------------------
    revno: 9483.4.215
    committer: address@hidden
    branch nick: rtmp
    timestamp: Mon 2008-12-22 10:42:17 -0800
    message:
      be less verbose, test for more array items.
    modified:
      testsuite/libnet.all/test_http.cpp
    ------------------------------------------------------------
    revno: 9483.4.216
    committer: address@hidden
    branch nick: rtmp
    timestamp: Mon 2008-12-22 10:43:54 -0800
    message:
      calculate our size, tweak debug output.
    modified:
      libamf/element.cpp
      libamf/element.h
    ------------------------------------------------------------
    revno: 9483.4.217
    committer: address@hidden
    branch nick: rtmp
    timestamp: Mon 2008-12-22 10:44:32 -0800
    message:
      be less verbose.
    modified:
      libnet/http.cpp
    ------------------------------------------------------------
    revno: 9483.4.218
    committer: address@hidden
    branch nick: rtmp
    timestamp: Mon 2008-12-22 10:45:11 -0800
    message:
      only append allocated bytes.
    modified:
      libamf/buffer.cpp
    ------------------------------------------------------------
    revno: 9483.4.219
    committer: address@hidden
    branch nick: rtmp
    timestamp: Mon 2008-12-22 10:46:06 -0800
    message:
      fix encoding of ECMA arrays and Objects.
    modified:
      libamf/amf.cpp
      libamf/amf.h
    ------------------------------------------------------------
    revno: 9483.4.220
    committer: address@hidden
    branch nick: rtmp
    timestamp: Mon 2008-12-22 19:56:29 -0700
    message:
      make an empty Typed Object.
    modified:
      libamf/element.cpp
      libamf/element.h
    ------------------------------------------------------------
    revno: 9483.4.221
    committer: address@hidden
    branch nick: rtmp
    timestamp: Mon 2008-12-22 19:57:22 -0700
    message:
      initialize on operator=, not append.
    modified:
      libamf/buffer.cpp
    ------------------------------------------------------------
    revno: 9483.4.222
    committer: address@hidden
    branch nick: rtmp
    timestamp: Mon 2008-12-22 19:58:01 -0700
    message:
      build typed objects with a property name.
      ecma arays are encoded with the items listed in reverse order, at least
      according to red5.
    modified:
      libamf/amf.cpp
      libamf/amf.h
    ------------------------------------------------------------
    revno: 9483.4.223
    committer: address@hidden
    branch nick: rtmp
    timestamp: Mon 2008-12-22 19:59:51 -0700
    message:
      fix more testcases, only 2 left!
    modified:
      testsuite/libnet.all/test_http.cpp
    ------------------------------------------------------------
    revno: 9483.4.224
    committer: address@hidden
    branch nick: rtmp
    timestamp: Tue 2008-12-23 11:49:27 -0700
    message:
      increment the pointer by 3 not 4 bytes after processing properties. 
Return array items in reverse order.
    modified:
      libamf/amf.cpp
    ------------------------------------------------------------
    revno: 9483.4.225
    committer: address@hidden
    branch nick: rtmp
    timestamp: Tue 2008-12-23 11:50:47 -0700
    message:
      check that all items in an array of Typed Objcts are actually typed 
objects. Add debug crap for the last two failing testcases.
    modified:
      testsuite/libnet.all/test_http.cpp
    ------------------------------------------------------------
    revno: 9483.4.226
    committer: address@hidden
    branch nick: rtmp
    timestamp: Tue 2008-12-23 12:49:50 -0700
    message:
      test for items in the second Typed Object in the array too.
    modified:
      testsuite/libnet.all/test_http.cpp
    ------------------------------------------------------------
    revno: 9483.4.227
    committer: address@hidden
    branch nick: rtmp
    timestamp: Tue 2008-12-23 16:46:57 -0700
    message:
      fix encoding of Typed Objects.
    modified:
      libamf/amf.cpp
    ------------------------------------------------------------
    revno: 9483.4.228
    committer: address@hidden
    branch nick: rtmp
    timestamp: Tue 2008-12-23 16:47:52 -0700
    message:
      enable previously disabled test cases for formatting responses, they all 
pass now too.
    modified:
      testsuite/libnet.all/test_http.cpp
    ------------------------------------------------------------
    revno: 9483.4.229
    committer: address@hidden
    branch nick: rtmp
    timestamp: Tue 2008-12-23 19:16:46 -0700
    message:
      more tests for formatting result messages for red5 echo test.
    modified:
      testsuite/libnet.all/test_http.cpp
    ------------------------------------------------------------
    revno: 9483.4.230
    committer: address@hidden
    branch nick: rtmp
    timestamp: Tue 2008-12-23 19:31:58 -0700
    message:
      more support for the weird echo test that returns an ECMA array to a 
STRICT array with undefines in it.
    modified:
      libamf/amf.cpp
      testsuite/libnet.all/test_http.cpp
    ------------------------------------------------------------
    revno: 9483.4.231
    committer: address@hidden
    branch nick: rtmp
    timestamp: Tue 2008-12-23 19:37:43 -0700
    message:
      eliminate one test case error flagged by valgrind.
    modified:
      testsuite/libnet.all/test_http.cpp
    ------------------------------------------------------------
    revno: 9483.4.232
    committer: address@hidden
    branch nick: rtmp
    timestamp: Wed 2008-12-24 17:20:16 -0700
    message:
      fix the formatting of response messages till it passes the red5 echo 
tests!
      get the POSTed data by reading more, or pulling it out of the end of the
      input buffer.
      hack the size for Content-Length, fixing is a TODO.
    modified:
      libnet/http.cpp
    ------------------------------------------------------------
    revno: 9483.4.233
    committer: address@hidden
    branch nick: rtmp
    timestamp: Thu 2008-12-25 10:50:02 -0700
    message:
      add directory of binary capture files so we can use wget and netcat to 
test Cygnal.
    added:
      cygnal/testsuite/cygnal.all/bindata/
      cygnal/testsuite/cygnal.all/bindata/README
      cygnal/testsuite/cygnal.all/bindata/array1-request.bin
      cygnal/testsuite/cygnal.all/bindata/array1-response.bin
      cygnal/testsuite/cygnal.all/bindata/array2-request.bin
      cygnal/testsuite/cygnal.all/bindata/array2-response.bin
      cygnal/testsuite/cygnal.all/bindata/array3-request.bin
      cygnal/testsuite/cygnal.all/bindata/array3-response.bin
      cygnal/testsuite/cygnal.all/bindata/array4-request.bin
      cygnal/testsuite/cygnal.all/bindata/array4-response.bin
      cygnal/testsuite/cygnal.all/bindata/array5-request.bin
      cygnal/testsuite/cygnal.all/bindata/array5-response.bin
      cygnal/testsuite/cygnal.all/bindata/array6-request.bin
      cygnal/testsuite/cygnal.all/bindata/array6-response.bin
      cygnal/testsuite/cygnal.all/bindata/array7-request.bin
      cygnal/testsuite/cygnal.all/bindata/array7-response.bin
      cygnal/testsuite/cygnal.all/bindata/bool-false-response.bin
      cygnal/testsuite/cygnal.all/bindata/bool-true-response.bin
      cygnal/testsuite/cygnal.all/bindata/custom-class1-request.bin
      cygnal/testsuite/cygnal.all/bindata/custom-class1-response.bin
      cygnal/testsuite/cygnal.all/bindata/custom-class2-request.bin
      cygnal/testsuite/cygnal.all/bindata/custom-class2-response.bin
      cygnal/testsuite/cygnal.all/bindata/date1-request.bin
      cygnal/testsuite/cygnal.all/bindata/date1-response.bin
      cygnal/testsuite/cygnal.all/bindata/date2-request.bin
      cygnal/testsuite/cygnal.all/bindata/date2-response.bin
      cygnal/testsuite/cygnal.all/bindata/echo-bool-false.bin
      cygnal/testsuite/cygnal.all/bindata/echo-bool-true.bin
      cygnal/testsuite/cygnal.all/bindata/echo-number1.bin
      cygnal/testsuite/cygnal.all/bindata/echo-string.bin
      cygnal/testsuite/cygnal.all/bindata/echo1-request.bin
      cygnal/testsuite/cygnal.all/bindata/echo1-response.bin
      cygnal/testsuite/cygnal.all/bindata/echo2-request.bin
      cygnal/testsuite/cygnal.all/bindata/echo2-response.bin
      cygnal/testsuite/cygnal.all/bindata/echo3-request.bin
      cygnal/testsuite/cygnal.all/bindata/echo3-response.bin
      cygnal/testsuite/cygnal.all/bindata/echo4-1-request.bin
      cygnal/testsuite/cygnal.all/bindata/echo4-1-response.bin
      cygnal/testsuite/cygnal.all/bindata/echo4-2-request.bin
      cygnal/testsuite/cygnal.all/bindata/echo4-2-response.bin
      cygnal/testsuite/cygnal.all/bindata/echo4-3-request.bin
      cygnal/testsuite/cygnal.all/bindata/echo4-3-response.bin
      cygnal/testsuite/cygnal.all/bindata/null-request.bin
      cygnal/testsuite/cygnal.all/bindata/null-response.bin
      cygnal/testsuite/cygnal.all/bindata/number1-request.bin
      cygnal/testsuite/cygnal.all/bindata/number1-response.bin
      cygnal/testsuite/cygnal.all/bindata/number10-request.bin
      cygnal/testsuite/cygnal.all/bindata/number10-response.bin
      cygnal/testsuite/cygnal.all/bindata/number11-request.bin
      cygnal/testsuite/cygnal.all/bindata/number11-response.bin
      cygnal/testsuite/cygnal.all/bindata/number12-request.bin
      cygnal/testsuite/cygnal.all/bindata/number12-response.bin
      cygnal/testsuite/cygnal.all/bindata/number13-request.bin
      cygnal/testsuite/cygnal.all/bindata/number13-response.bin
      cygnal/testsuite/cygnal.all/bindata/number14-request.bin
      cygnal/testsuite/cygnal.all/bindata/number14-response.bin
      cygnal/testsuite/cygnal.all/bindata/number15-request.bin
      cygnal/testsuite/cygnal.all/bindata/number15-response.bin
      cygnal/testsuite/cygnal.all/bindata/number16-request.bin
      cygnal/testsuite/cygnal.all/bindata/number16-response.bin
      cygnal/testsuite/cygnal.all/bindata/number2-request.bin
      cygnal/testsuite/cygnal.all/bindata/number2-response.bin
      cygnal/testsuite/cygnal.all/bindata/number3-request.bin
      cygnal/testsuite/cygnal.all/bindata/number3-response.bin
      cygnal/testsuite/cygnal.all/bindata/number4-request.bin
      cygnal/testsuite/cygnal.all/bindata/number4-response.bin
      cygnal/testsuite/cygnal.all/bindata/number5-request.bin
      cygnal/testsuite/cygnal.all/bindata/number5-response.bin
      cygnal/testsuite/cygnal.all/bindata/number6-request.bin
      cygnal/testsuite/cygnal.all/bindata/number6-response.bin
      cygnal/testsuite/cygnal.all/bindata/number7-request.bin
      cygnal/testsuite/cygnal.all/bindata/number7-response.bin
      cygnal/testsuite/cygnal.all/bindata/number8-request.bin
      cygnal/testsuite/cygnal.all/bindata/number8-response.bin
      cygnal/testsuite/cygnal.all/bindata/number9-request.bin
      cygnal/testsuite/cygnal.all/bindata/number9-response.bin
      cygnal/testsuite/cygnal.all/bindata/object1-request.bin
      cygnal/testsuite/cygnal.all/bindata/object1-responses.bin
      cygnal/testsuite/cygnal.all/bindata/object2-request.bin
      cygnal/testsuite/cygnal.all/bindata/object2-response.bin
      cygnal/testsuite/cygnal.all/bindata/remote-class1-request.bin
      cygnal/testsuite/cygnal.all/bindata/remote-class1-response.bin
      cygnal/testsuite/cygnal.all/bindata/remote-class2-request.bin
      cygnal/testsuite/cygnal.all/bindata/remote-class2-response.bin
      cygnal/testsuite/cygnal.all/bindata/remote-class3-request.bin
      cygnal/testsuite/cygnal.all/bindata/remote-class3-response.bin
      cygnal/testsuite/cygnal.all/bindata/remote-class4-request.bin
      cygnal/testsuite/cygnal.all/bindata/remote-class4-response.bin
      cygnal/testsuite/cygnal.all/bindata/undefined-request.bin
      cygnal/testsuite/cygnal.all/bindata/undefined-response.bin
    ------------------------------------------------------------
    revno: 9483.4.234
    committer: address@hidden
    branch nick: rtmp
    timestamp: Thu 2008-12-25 15:26:06 -0700
    message:
      add more temp files to CLEANFILES.
    modified:
      cygnal/testsuite/cygnal.all/Makefile.am
    ------------------------------------------------------------
    revno: 9483.4.235
    committer: address@hidden
    branch nick: rtmp
    timestamp: Thu 2008-12-25 15:27:15 -0700
    message:
      test POSTING AMF0 data to Cygnal to see if it returns the correct 'echo' 
response.
    modified:
      cygnal/testsuite/cygnal.exp
    ------------------------------------------------------------
    revno: 9483.4.236
    committer: address@hidden
    branch nick: rtmp
    timestamp: Thu 2008-12-25 15:27:51 -0700
    message:
      don't try to format a header with bogus data.
    modified:
      libnet/http.cpp
    ------------------------------------------------------------
    revno: 9483.4.237
    committer: address@hidden
    branch nick: rtmp
    timestamp: Thu 2008-12-25 15:41:53 -0700
    message:
      use the freshly built cygnal to test against.
    modified:
      cygnal/testsuite/cygnal.exp
    ------------------------------------------------------------
    revno: 9483.4.238
    committer: address@hidden
    branch nick: rtmp
    timestamp: Thu 2008-12-25 15:49:37 -0700
    message:
      get rid of the temp directory from wget.
    modified:
      cygnal/testsuite/cygnal.exp
    ------------------------------------------------------------
    revno: 9483.4.239
    committer: address@hidden
    branch nick: rtmp
    timestamp: Thu 2008-12-25 15:50:09 -0700
    message:
      get rid of the temp directory from wget.
    modified:
      cygnal/testsuite/cygnal.exp
    ------------------------------------------------------------
    revno: 9483.4.240
    committer: address@hidden
    branch nick: rtmp
    timestamp: Thu 2008-12-25 16:00:23 -0700
    message:
      merge from trunk to get new red5 testing option.
    added:
      testsuite/misc-ming.all/red5test.as
    renamed:
      libcore/asobj/Color.cpp => libcore/asobj/Color_as.cpp
      libcore/asobj/Color.h => libcore/asobj/Color_as.h
      libcore/asobj/Mouse.cpp => libcore/asobj/Mouse_as.cpp
      libcore/asobj/Mouse.h => libcore/asobj/Mouse_as.h
      libcore/asobj/SharedObject.cpp => libcore/asobj/SharedObject_as.cpp
      libcore/asobj/SharedObject.h => libcore/asobj/SharedObject_as.h
      libcore/asobj/TextFormat.cpp => libcore/asobj/TextFormat_as.cpp
      libcore/asobj/TextFormat.h => libcore/asobj/TextFormat_as.h
    modified:
      Makefile.am
      configure.ac
      libbase/NetworkAdapter.h
      libbase/curl_adapter.cpp
      libcore/StringPredicates.h
      libcore/TextField.cpp
      libcore/as_environment.h
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/Error_as.cpp
      libcore/asobj/Global.cpp
      libcore/asobj/LocalConnection.cpp
      libcore/asobj/LocalConnection.h
      libcore/asobj/Makefile.am
      libcore/asobj/Math_as.cpp
      libcore/asobj/MovieClipLoader.cpp
      libcore/asobj/NetConnection_as.cpp
      libcore/asobj/NetConnection_as.h
      libcore/asobj/XML_as.h
      libcore/parser/SWFMovieDefinition.h
      libcore/parser/sprite_definition.h
      libcore/vm/VM.cpp
      libcore/vm/fn_call.h
      libmedia/ffmpeg/AudioDecoderFfmpeg.h
      libmedia/ffmpeg/MediaParserFfmpeg.cpp
      libmedia/ffmpeg/ffmpegHeaders.h
      testsuite/actionscript.all/LocalConnection.as
      testsuite/actionscript.all/NetConnection.as
      testsuite/libamf.all/test_amf.cpp
      testsuite/libnet.all/generate_amfbins.cpp
      testsuite/misc-ming.all/Makefile.am
      testsuite/misc-ming.all/remoting.as
      libcore/asobj/Color_as.cpp
      libcore/asobj/Color_as.h
      libcore/asobj/Mouse_as.cpp
      libcore/asobj/Mouse_as.h
      libcore/asobj/SharedObject_as.cpp
      libcore/asobj/SharedObject_as.h
      libcore/asobj/TextFormat_as.cpp
      libcore/asobj/TextFormat_as.h
    ------------------------------------------------------------
    revno: 9483.4.241
    committer: address@hidden
    branch nick: rtmp
    timestamp: Fri 2008-12-26 11:00:52 -0700
    message:
      run the echo tests in a tight loop., to really beat the crap oput of 
Cygnal's ability to handle many network connections without threading issues.
    modified:
      cygnal/testsuite/cygnal.exp
    ------------------------------------------------------------
    revno: 9483.4.242
    committer: address@hidden
    branch nick: rtmp
    timestamp: Fri 2008-12-26 11:02:15 -0700
    message:
      oops. use the port for the locally started cygnal.
    modified:
      cygnal/testsuite/cygnal.exp
    ------------------------------------------------------------
    revno: 9483.4.243
    committer: address@hidden
    branch nick: rtmp
    timestamp: Fri 2008-12-26 11:23:01 -0700
    message:
      disable now bogus test, elements don't resize, they throw exceptions.
    modified:
      testsuite/libamf.all/test_el.cpp
    ------------------------------------------------------------
    revno: 9483.4.244
    committer: address@hidden
    branch nick: rtmp
    timestamp: Fri 2008-12-26 11:33:26 -0700
    message:
      all tests pass now that were expected failures. Strict array gets the 
count correct now too.
    modified:
      testsuite/libamf.all/test_amf.cpp
    ------------------------------------------------------------
    revno: 9483.4.245
    committer: address@hidden
    branch nick: rtmp
    timestamp: Fri 2008-12-26 11:40:59 -0700
    message:
      fix append overflow test, now that Buffers only use the allocated data, 
and not the entire buffer.
    modified:
      testsuite/libamf.all/test_buffer.cpp
    ------------------------------------------------------------
    revno: 9483.4.246
    committer: address@hidden
    branch nick: rtmp
    timestamp: Fri 2008-12-26 11:51:05 -0700
    message:
      correct memory offset for test.
    modified:
      testsuite/libnet.all/test_http.cpp
=== modified file 'cygnal/README'
--- a/cygnal/README     2007-05-14 08:44:19 +0000
+++ b/cygnal/README     2008-12-18 03:40:16 +0000
@@ -111,3 +111,33 @@
 
 # transcode.cpp, transcode.h:  Convert between codecs using Gstreamer.
 # flash.cpp, flash.h:  SharedObject support using AMF.
+
+
+cpus        4
+threads per cpu 1
+spawn limit 4
+
+
+connection_handler - start a server waiting for incoming
+    connections. This blocks waiting for new client requests. When a
+    client connects, a dispatch_handler is created.
+
+A new dispatch_handler is created for each incoming connection up to
+    the 'spawn_limit'. After the spawn_limit is reached, future
+    connections get added to the data each dispatch thread is waiting
+    for. Each dispatch_handler has a network connection.
+
+dispatch_handler - waits on a set of file descriptors, returning a set
+    of file descriptors with activity. When it sees activity, the
+    event handler for the appropriate protocol is called, but no data
+    is read.
+
+http_handler - gets invoked when there is data ready to be
+   processed. It is invoked directly by the dispatch handler when
+   there is data to be read. This controls all I/O for this file
+   descriptor.
+
+rtmp_handler - ditto.
+
+
+

=== modified file 'cygnal/testsuite/cygnal.all/Makefile.am'
--- a/cygnal/testsuite/cygnal.all/Makefile.am   2008-11-29 23:53:14 +0000
+++ b/cygnal/testsuite/cygnal.all/Makefile.am   2008-12-25 22:26:06 +0000
@@ -69,7 +69,9 @@
        site.exp.bak \
        testrun.* \
        foo* \
-       wget-log*
+       *.bin* \
+       wget-log* \
+       gateway*
 
 check-DEJAGNU: site-update
        @runtest=$(RUNTEST); \

=== added directory 'cygnal/testsuite/cygnal.all/bindata'
=== added file 'cygnal/testsuite/cygnal.all/bindata/README'
--- a/cygnal/testsuite/cygnal.all/bindata/README        1970-01-01 00:00:00 
+0000
+++ b/cygnal/testsuite/cygnal.all/bindata/README        2008-12-25 17:50:02 
+0000
@@ -0,0 +1,5 @@
+These are binary captures made of the Red5 'echo_test' swf file. Since we 
can't use the Adobe player for testing Cygnal, as that would cause potential
+licensing issues for other Gnash work, this lets us use netcat and wget
+to send and receive RTMPT, which is AMF transferred using HTTP POST and GET
+commands.
+

=== added file 'cygnal/testsuite/cygnal.all/bindata/array1-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/array1-request.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/array1-request.bin  2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/array1-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/array1-response.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/array1-response.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/array2-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/array2-request.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/array2-request.bin  2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/array2-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/array2-response.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/array2-response.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/array3-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/array3-request.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/array3-request.bin  2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/array3-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/array3-response.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/array3-response.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/array4-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/array4-request.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/array4-request.bin  2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/array4-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/array4-response.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/array4-response.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/array5-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/array5-request.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/array5-request.bin  2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/array5-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/array5-response.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/array5-response.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/array6-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/array6-request.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/array6-request.bin  2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/array6-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/array6-response.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/array6-response.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/array7-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/array7-request.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/array7-request.bin  2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/array7-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/array7-response.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/array7-response.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/bool-false-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/bool-false-response.bin      
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/bool-false-response.bin     2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/bool-true-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/bool-true-response.bin       
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/bool-true-response.bin      2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/custom-class1-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/custom-class1-request.bin    
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/custom-class1-request.bin   2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/custom-class1-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/custom-class1-response.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/custom-class1-response.bin  2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/custom-class2-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/custom-class2-request.bin    
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/custom-class2-request.bin   2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/custom-class2-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/custom-class2-response.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/custom-class2-response.bin  2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/date1-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/date1-request.bin    
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/date1-request.bin   2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/date1-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/date1-response.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/date1-response.bin  2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/date2-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/date2-request.bin    
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/date2-request.bin   2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/date2-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/date2-response.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/date2-response.bin  2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/echo-bool-false.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/echo-bool-false.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/echo-bool-false.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/echo-bool-true.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/echo-bool-true.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/echo-bool-true.bin  2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/echo-number1.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/echo-number1.bin     
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/echo-number1.bin    2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/echo-string.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/echo-string.bin      
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/echo-string.bin     2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/echo1-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/echo1-request.bin    
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/echo1-request.bin   2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/echo1-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/echo1-response.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/echo1-response.bin  2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/echo2-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/echo2-request.bin    
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/echo2-request.bin   2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/echo2-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/echo2-response.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/echo2-response.bin  2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/echo3-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/echo3-request.bin    
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/echo3-request.bin   2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/echo3-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/echo3-response.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/echo3-response.bin  2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/echo4-1-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/echo4-1-request.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/echo4-1-request.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/echo4-1-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/echo4-1-response.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/echo4-1-response.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/echo4-2-request.bin'
--- a/cygnal/testsuite/cygnal.all/bindata/echo4-2-request.bin   1970-01-01 
00:00:00 +0000
+++ b/cygnal/testsuite/cygnal.all/bindata/echo4-2-request.bin   2008-12-25 
17:50:02 +0000
@@ -0,0 +1,1 @@
+6789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
\ No newline at end of file

=== added file 'cygnal/testsuite/cygnal.all/bindata/echo4-2-response.bin'
--- a/cygnal/testsuite/cygnal.all/bindata/echo4-2-response.bin  1970-01-01 
00:00:00 +0000
+++ b/cygnal/testsuite/cygnal.all/bindata/echo4-2-response.bin  2008-12-25 
17:50:02 +0000
@@ -0,0 +1,1 @@
+567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123
\ No newline at end of file

=== added file 'cygnal/testsuite/cygnal.all/bindata/echo4-3-request.bin'
--- a/cygnal/testsuite/cygnal.all/bindata/echo4-3-request.bin   1970-01-01 
00:00:00 +0000
+++ b/cygnal/testsuite/cygnal.all/bindata/echo4-3-request.bin   2008-12-25 
17:50:02 +0000
@@ -0,0 +1,1 @@
+012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
\ No newline at end of file

=== added file 'cygnal/testsuite/cygnal.all/bindata/echo4-3-response.bin'
--- a/cygnal/testsuite/cygnal.all/bindata/echo4-3-response.bin  1970-01-01 
00:00:00 +0000
+++ b/cygnal/testsuite/cygnal.all/bindata/echo4-3-response.bin  2008-12-25 
17:50:02 +0000
@@ -0,0 +1,1 @@
+456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
\ No newline at end of file

=== added file 'cygnal/testsuite/cygnal.all/bindata/null-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/null-request.bin     
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/null-request.bin    2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/null-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/null-response.bin    
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/null-response.bin   2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number1-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number1-request.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number1-request.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number1-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number1-response.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number1-response.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number10-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number10-request.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number10-request.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number10-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number10-response.bin        
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number10-response.bin       2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number11-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number11-request.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number11-request.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number11-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number11-response.bin        
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number11-response.bin       2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number12-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number12-request.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number12-request.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number12-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number12-response.bin        
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number12-response.bin       2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number13-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number13-request.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number13-request.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number13-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number13-response.bin        
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number13-response.bin       2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number14-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number14-request.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number14-request.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number14-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number14-response.bin        
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number14-response.bin       2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number15-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number15-request.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number15-request.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number15-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number15-response.bin        
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number15-response.bin       2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number16-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number16-request.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number16-request.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number16-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number16-response.bin        
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number16-response.bin       2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number2-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number2-request.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number2-request.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number2-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number2-response.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number2-response.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number3-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number3-request.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number3-request.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number3-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number3-response.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number3-response.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number4-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number4-request.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number4-request.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number4-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number4-response.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number4-response.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number5-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number5-request.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number5-request.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number5-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number5-response.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number5-response.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number6-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number6-request.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number6-request.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number6-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number6-response.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number6-response.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number7-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number7-request.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number7-request.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number7-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number7-response.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number7-response.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number8-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number8-request.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number8-request.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number8-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number8-response.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number8-response.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number9-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number9-request.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number9-request.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/number9-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/number9-response.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/number9-response.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/object1-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/object1-request.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/object1-request.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/object1-responses.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/object1-responses.bin        
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/object1-responses.bin       2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/object2-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/object2-request.bin  
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/object2-request.bin 2008-12-25 17:50:02 
+0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/object2-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/object2-response.bin 
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/object2-response.bin        2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/remote-class1-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/remote-class1-request.bin    
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/remote-class1-request.bin   2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/remote-class1-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/remote-class1-response.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/remote-class1-response.bin  2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/remote-class2-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/remote-class2-request.bin    
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/remote-class2-request.bin   2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/remote-class2-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/remote-class2-response.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/remote-class2-response.bin  2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/remote-class3-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/remote-class3-request.bin    
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/remote-class3-request.bin   2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/remote-class3-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/remote-class3-response.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/remote-class3-response.bin  2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/remote-class4-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/remote-class4-request.bin    
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/remote-class4-request.bin   2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/remote-class4-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/remote-class4-response.bin   
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/remote-class4-response.bin  2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/undefined-request.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/undefined-request.bin        
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/undefined-request.bin       2008-12-25 
17:50:02 +0000 differ
=== added file 'cygnal/testsuite/cygnal.all/bindata/undefined-response.bin'
Binary files a/cygnal/testsuite/cygnal.all/bindata/undefined-response.bin       
1970-01-01 00:00:00 +0000 and 
b/cygnal/testsuite/cygnal.all/bindata/undefined-response.bin      2008-12-25 
17:50:02 +0000 differ
=== modified file 'cygnal/testsuite/cygnal.exp'
--- a/cygnal/testsuite/cygnal.exp       2008-12-15 03:46:58 +0000
+++ b/cygnal/testsuite/cygnal.exp       2008-12-26 18:02:15 +0000
@@ -32,16 +32,21 @@
 set file all
 set params ""
 
-set cport 5080;                        # the port for the connection to Cygnal
+set cport 6080;                        # the port for the connection to Cygnal
 set chost "localhost";         # the host to connect to
 set sid 0;                     # the server ID
 
+set server_dead false; # toggle is Cygnal dies
+
 proc delete_files {} {
+    global chost
+    global cport
+
     # Get rid of old temp files created by testing,
     if {[file exists foo]} {
-       set junk [glob foo* wget-log* amf0*  *.bin.*]
+       set junk [glob foo* wget-log* amf0* *.bin* gateway* $chost:$cport]
        if { $junk != "" } {
-           catch "exec rm -f $junk"
+           catch "exec rm -fr $junk"
        }
     }
 }
@@ -67,6 +72,7 @@
     global chost
     global cport
     verbose "Trying to netcat $name to Cygnal $chost : $cport)"
+    global server_dead 
     spawn -noecho nc $chost $cport
     set nid $spawn_id
     expect {
@@ -89,41 +95,111 @@
     global chost
     global cport
     global sid
-    set result false
-
-    # --header="Content-Type: application/x-amf"
-    verbose "Trying to wget from Cygnal -v --tries=3 --server-response 
$options http://$chost:$cport/$name"; 2
-    spawn -noecho wget -v --tries=3 --server-response $options 
http://$chost:$cport/$name
-    set wid $spawn_id
-    expect {
-       -i $wid "*Saving to: *" {
-           verbose "Wget all done..." 2
-           set result true
-       }
-       -i $wid "* saved " {
-           verbose "Wget all done..." 2
-           set result true
-       }
-       -i $wid "Giving up" {
-           verbose "Giving up on file transfer"
-       }
-#      -i $wid "Retrying." {
-#          verbose "Retrying file"
-#          exp_continue
-#      }
-       -i $wid "Connection close" {
-           verbose "Connection closed from other end"
-       }
-       -i $wid "connected." {
-           exp_continue
-       }
-       -i $wid "has sprung into existence" {
-           verbose "File transferred but no size"
-           set result false
-       }
-       -i $wid "Connection closed at" {
-       }
-       -i $wid "*Connection refused" {
+    global server_dead 
+    set result false
+
+    # --header="Content-Type: application/x-amf"
+    verbose "Trying to wget from Cygnal -p -v --tries=3 --server-response 
$options http://$chost:$cport/$name"; 2
+    spawn -noecho wget -p -v --tries=3 --server-response $options 
http://$chost:$cport/$name
+    set wid $spawn_id
+    expect {
+       -i $wid "*Saving to: *" {
+           verbose "Wget all done..." 2
+           set result true
+       }
+       -i $wid "* saved " {
+           verbose "Wget all done..." 2
+           set result true
+       }
+       -i $wid "Giving up" {
+           verbose "Giving up on file transfer"
+       }
+#      -i $wid "Retrying." {
+#          verbose "Retrying file"
+#          exp_continue
+#      }
+       -i $wid "Connection close" {
+           verbose "Connection closed from other end"
+       }
+       -i $wid "connected." {
+           exp_continue
+       }
+       -i $wid "has sprung into existence" {
+           verbose "File transferred but no size"
+           set result false
+       }
+       -i $wid "Connection closed at" {
+       }
+       -i $wid "*Connection refused" {
+           set server_dead true
+           verbose "Wget failed..."
+       }
+       -i $wid "Content-Type: " {
+           verbose "Got HTTP response header $name" 2
+           set result true
+       }
+       -i $wid eof {
+           verbose "Wget EOF..."
+           set result true
+       }
+       -i $wid timeout {
+           verbose "Wget still running after ${timeout} seconds, killing it 
(deadlock?)"
+       }
+    }
+    expect {
+       -i $wid "*" {
+       }
+    }
+
+    catch close -i $wid
+
+    return $result
+}
+
+#
+# Get something from the copy of Cygnal we started
+proc wpost { name options } {
+    global server_dead 
+    global chost
+    global cport
+    global sid
+    set result false
+    # --header="Content-Type: application/x-amf"
+    verbose "Trying to wget POST to Cygnal -p -v --tries=3 --server-response 
--header=\"Content-Type: application/x-amf\" $options --post-file=$name 
http://$chost:$cport/echo/gateway"; 2
+#    set where "[pwd]/${name}_barfoo"
+    spawn  wget -p -v --tries=3 --server-response  --post-file=$name --header 
"Content-Type: application/x-amf" http://$chost:$cport/echo/gateway
+    set wid $spawn_id
+    expect {
+       -i $wid "*Saving to: *" {
+           verbose "Wget all done..." 2
+           set result true
+       }
+       -i $wid "* saved " {
+           verbose "Wget all done..." 2
+           set result true
+       }
+       -i $wid "Giving up" {
+           verbose "Giving up on file transfer"
+       }
+#      -i $wid "Retrying." {
+#          verbose "Retrying file"
+#          exp_continue
+#      }
+       -i $wid "Connection close" {
+           verbose "Connection closed from other end"
+       }
+       -i $wid "connected." {
+           exp_continue
+       }
+       -i $wid "has sprung into existence" {
+           verbose "File transferred but no size"
+           set result false
+       }
+       -i $wid "Connection closed at" {
+           set server_dead true
+       }
+       -i $wid "*Connection refused" {
+           set server_dead true
            verbose "Wget failed..."
        }
        -i $wid "Content-Type: " {
@@ -152,21 +228,24 @@
 # Start the server running. 
 #
 proc start_cygnal { } {
+    global server_dead 
     global sid
+    global objdir
     set result false
-    set server "../../cygnal"
-    set options "-p 5000 -vv -n -t -r [pwd]"
+    # find the right cygnal in our build tree to run
+    set server [lookfor_file $objdir cygnal]
+    set options "-p 6000 -vv -n -t -r [pwd]"
     verbose "Starting Cygnal server \"$server $options\" for testing"
     spawn $server $options
     set sid $spawn_id
 #    set pid [exp_pid -i $sid]
     expect -timeout 1 {
        -i $sid "*Server bound to service" {
-           verbose "Cygnal \"$server -p 4000 -vv -n\" bound to port"
+           verbose "Cygnal \"$server -vv -n\" bound to port"
            set result true
        }
        -i $sid "*Starting*" {
-           verbose "Started Cygnal \"$server -p 4000 -vv -n\""
+           verbose "Started Cygnal \"$server -vv -n\""
            set result true
        }
        -i $sid "File * transferred" {
@@ -174,6 +253,7 @@
        }
        -i $sid "unable to bind to port" {
            log_error "Another Cygnal is already on this port!"
+           set server_dead "true"
        }
        -i $sid "HTTP Handler" {
            verbose "Started HTTP Handler"
@@ -265,36 +345,103 @@
 #
 
 # send the test file
-set result [ wget "foo" "--post-file=foo.1" ]
-if { $result == true } {
-    verbose "foo was transferred!" 2
-    pass "HTTP POST single file"
-} else {
-    fail "HTTP POST single file"
-}
+# set result [ wget "foo" "--post-file=foo.1" ]
+# if { $result == true } {
+#     verbose "foo was transferred!" 2
+#     pass "HTTP POST single file"
+# } else {
+#     fail "HTTP POST single file"
+# }
 # } else {
 #     unresolved "HTTP POST single file"
 # }
 
 
-set binsdir "[file dirname [file dirname [file dirname 
$srcdir]]]/testsuite/libnet.all"
-set bins [glob -nocomplain $binsdir/*.bin]
-#set foo "amf0-number.bin amf0-undefined-object.bin amf0-null-object.bin"
-
-foreach i $bins {
-    set pos [string last  "/" $i]
-    if { $pos > 0 } {
-       set j [string range $i $pos+1 end]
-    }
-    set options { --header="Content-Type: application/x-am" --post-file=$i }
-    set result [ wget $j $options ]    
-    if { $result == true } {
-       pass "HTTP POST single AMF0 $j"
-    } else {
-       fail "HTTP POST single AMF0 $j"
-    }
+# set binsdir "[file dirname [file dirname [file dirname 
$srcdir]]]/testsuite/libnet.all"
+# set bins [glob -nocomplain $binsdir/*.bin]
+# #set foo "amf0-number.bin amf0-undefined-object.bin amf0-null-object.bin"
+
+# foreach i $bins {
+#     set pos [string last  "/" $i]
+#     if { $pos > 0 } {
+#      set j [string range $i $pos+1 end]
+#     }
+# #    set options { --header="Content-Type: application/x-amf" --post-file=$i 
}
+#     set result [ wpost $i "" ]
+#     if { $result == true } {
+#      pass "HTTP POST single AMF0 $j"
+#     } else {
+#      fail "HTTP POST single AMF0 $j"
+#     }
+# }
+
+# Red5, a java based RTMP server has a nice test case that lets one
+# bounce AMF data types off of a server using either RTMPT or RTMP,
+# and we collected all of these from net captures of those. While some
+# of the unit tests in the top level testsuite/libnet.all use these
+# same captures differently, these are the original raw files those
+# tests are based on. We need disk based files because wget needs
+# those to calculate the size properly for the "Content-Length" header
+# field. 
+set binsdir "[file dirname [file dirname [file dirname 
$srcdir]]]/cygnal/testsuite/cygnal.all/bindata"
+set requests  [glob -nocomplain $binsdir/*-request.bin]
+set responses [glob -nocomplain $binsdir/*-response.bin]
+
+# test with the Red5 echo tests
+
+set limit 10
+# Beat the living daylights out of Cygnal, it'll have to handle much worse.
+# There are limits to what we can do testing on just one machine, but this
+# catches quite a few problems that otherwise were hard to reproduce. There
+# are limits to what we can do on one single machine. Ultimately, this needs
+# to fire up tests running from multiple hosts in the build farm, which should
+# be totally doable in 
+#
+# Just as a note, I've found while testing that when running Cygnal in
+# single threaded mode, it can't keep up with hundreds of simultaneous
+# network connections, so many wgets processes all go zombie waiting to
+# get disconnected. So for single threaded mode, don't set the limit over
+# 10, it's just for testing protocol stuff anyway! Multi threaded testing
+# works mode works much better, I've had the limit set much higher.
+for { set k 0 } { $k <= $limit } { incr k } {
+    foreach i $requests {
+       set pos [string last  "/" $i]
+       if { $pos > 0 } {
+           set j [string range $i $pos+1 end]
+       }
+       #    set options "--header='Content-Type: application/x-amf' 
--post-file=$i"
+       if {$server_dead == "false"} {
+           set result [ wpost $i "" ]
+           if { $result == true } {
+               pass "HTTP POST AMF0 $j, sent"
+           } else {
+               fail "HTTP POST AMF0 $j, sent"
+           }
+       } else {
+           untested "HTTP POST AMF0 $j, sent"
+           untested "HTTP POST AMF0 $j got no response, not saved to 
$chost:$cport/gateway"
+           break;
+       }
+       
+       set gotback "[string trimright $i "-request.bin"]-response.bin"
+       puts $gotback
+       if {[file exists $chost:$cport/echo/gateway]} {
+           pass "HTTP POST AMF0  got response, saved to $chost:$cport/gateway"
+           #   puts "[file size $chost:$cport/echo/gateway]"
+           # set res [exec cmp $var $gotback]
+       } else {
+           fail "HTTP POST AMF0 $j got response, saved to 
$chost:$cport/gateway"
+       }
+    }
+    # if we don't sleep here and give the poor host machine a rest, it can't 
handle
+    # any more wget processes running at the same time. I was winding up with
+    # hundreds of zombies that eat my quad xeon machine with 4 gig of RAM!
+#    sleep 1
+#    catch "exec pkill. wget"
 }
 
+delete_files
+
 #############################################################
 # Stop the server, we're done. As the server doesn't die when a connection is
 # closed, we have to kill it, and then close the pty handle.
@@ -305,7 +452,6 @@
     catch "close -i $sid"
 }
 
-delete_files
 
 
 # testcases is set by the Makefile in the site.exp data file.

=== modified file 'libamf/amf.cpp'
--- a/libamf/amf.cpp    2008-11-29 20:25:32 +0000
+++ b/libamf/amf.cpp    2008-12-24 02:31:58 +0000
@@ -29,11 +29,19 @@
 #include "GnashException.h"
 #include "buffer.h"
 #include "amf.h"
-#include "network.h"
+//#include "network.h"
 #include "element.h"
 #include "amfutf8.h"
 #include <boost/cstdint.hpp> // for boost::?int??_t
 
+#if !defined(HAVE_WINSOCK_H) || defined(__OS2__)
+# include <sys/types.h>
+# include <arpa/inet.h>
+#else
+# include <windows.h>
+# include <io.h>
+#endif
+
 using namespace std;
 using namespace gnash;
 
@@ -109,8 +117,8 @@
     union {
        boost::uint16_t s;
        struct {
-           Network::byte_t c0;
-           Network::byte_t c1;
+           boost::uint8_t c0;
+           boost::uint8_t c1;
        } c;
     } u;
           
@@ -123,7 +131,7 @@
     // Little-endian machine: byte-swap the word
 
     // A conveniently-typed pointer to the source data
-    Network::byte_t *x = static_cast<Network::byte_t *>(word);
+    boost::uint8_t *x = static_cast<boost::uint8_t *>(word);
 
     /// Handle odd as well as even counts of bytes
     std::reverse(x, x+size);
@@ -151,7 +159,7 @@
     *buf = Element::NUMBER_AMF0;
     num = indata;
     swapBytes(&num, AMF0_NUMBER_SIZE);
-    *buf += (num);
+    *buf += num;
     
     return buf;
 }
@@ -168,7 +176,7 @@
     // Encode a boolean value. 0 for false, 1 for true
     boost::shared_ptr<Buffer> buf(new Buffer(2));
     *buf = Element::BOOLEAN_AMF0; 
-    *buf += static_cast<Network::byte_t>(flag);
+    *buf += static_cast<boost::uint8_t>(flag);
     
     return buf;
 }
@@ -177,6 +185,45 @@
 ///
 /// @return a binary AMF packet in big endian format
 boost::shared_ptr<Buffer>
+AMF::encodeObject(const amf::Element &data)
+{
+    GNASH_REPORT_FUNCTION;
+    boost::uint32_t length;
+    length = data.propertySize();
+    //    log_debug("Encoded data size has %d properties", length);
+    boost::shared_ptr<amf::Buffer> buf;
+    if (length) {
+       buf.reset(new amf::Buffer);
+    }
+    *buf = Element::OBJECT_AMF0;
+    if (data.propertySize() > 0) {
+       vector<boost::shared_ptr<amf::Element> >::const_iterator ait;    
+       vector<boost::shared_ptr<amf::Element> > props = data.getProperties();
+       for (ait = props.begin(); ait != props.end(); ait++) {
+           boost::shared_ptr<amf::Element> el = (*(ait));
+           boost::shared_ptr<amf::Buffer> item = AMF::encodeElement(el);
+           if (item) {
+               *buf += item;
+               item.reset();
+           } else {
+               break;
+           }
+           //      el->dump();
+       }
+    }
+
+    // Terminate the object
+    *buf += '\0';
+    *buf += '\0';
+    *buf += TERMINATOR;
+
+    return buf;
+}
+
+/// \brief Encode the end of an object to it's serialized representation.
+///
+/// @return a binary AMF packet in big endian format
+boost::shared_ptr<Buffer>
 AMF::encodeObjectEnd()
 {
 //    GNASH_REPORT_FUNCTION;
@@ -193,7 +240,7 @@
 AMF::encodeUndefined()
 {
 //    GNASH_REPORT_FUNCTION;
-    boost::shared_ptr<Buffer> buf(new Buffer(AMF_HEADER_SIZE));
+    boost::shared_ptr<Buffer> buf(new Buffer(1));
     *buf = Element::UNDEFINED_AMF0;
     
     return buf;
@@ -206,7 +253,7 @@
 AMF::encodeUnsupported()
 {
 //    GNASH_REPORT_FUNCTION;
-    boost::shared_ptr<Buffer> buf(new Buffer(AMF_HEADER_SIZE));
+    boost::shared_ptr<Buffer> buf(new Buffer(1));
     *buf = Element::UNSUPPORTED_AMF0;
     
     return buf;
@@ -218,13 +265,14 @@
 /// 
 /// @return a binary AMF packet in big endian format
 boost::shared_ptr<Buffer>
-AMF::encodeDate(const Network::byte_t *data)
+AMF::encodeDate(const boost::uint8_t *date)
 {
 //    GNASH_REPORT_FUNCTION;
-    boost::shared_ptr<Buffer> buf(new Buffer(AMF_HEADER_SIZE));
+//    boost::shared_ptr<Buffer> buf;
+    boost::shared_ptr<Buffer> buf(new Buffer(AMF0_NUMBER_SIZE+1));
     *buf = Element::DATE_AMF0;
-    double num = *reinterpret_cast<const double*>(data);
-    swapBytes(&num, 8);
+    double num = *(reinterpret_cast<const double*>(date));
+    swapBytes(&num, AMF0_NUMBER_SIZE);
     *buf += num;
     
     return buf;
@@ -253,12 +301,12 @@
 ///
 /// @return a binary AMF packet in big endian format
 boost::shared_ptr<Buffer>
-AMF::encodeXMLObject(const Network::byte_t * /*data */, size_t /* size */)
+AMF::encodeXMLObject(const boost::uint8_t * /*data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
     boost::shared_ptr<Buffer> buf;
     log_unimpl("XML AMF objects not supported yet");
-    
+    buf.reset();
     return buf;
 }
 
@@ -270,11 +318,62 @@
 ///
 /// @return a binary AMF packet in big endian format
 boost::shared_ptr<Buffer>
-AMF::encodeTypedObject(Network::byte_t * /* data */, size_t /* size */)
+AMF::encodeTypedObject(const amf::Element &data)
 {
-//    GNASH_REPORT_FUNCTION;
-    boost::shared_ptr<Buffer> buf;
-    log_unimpl("Typed AMF objects not supported yet");
+    GNASH_REPORT_FUNCTION;
+    boost::uint32_t length;
+    length = data.propertySize();
+//    log_debug("Encoded data size has %d properties", length);
+    boost::shared_ptr<amf::Buffer> buf(new amf::Buffer);
+    buf->clear();
+#if 0
+    size_t outsize = 0;
+    if (data.getName()) {
+       outsize = data.getNameSize() + sizeof(boost::uint16_t);
+    } else {
+       outsize == 1;
+    }
+//     if (length <= 0) {
+//     buf.reset();
+//     return buf;
+//     }
+    //    buf.reset(new amf::Buffer);
+#endif
+    *buf = Element::TYPED_OBJECT_AMF0;
+    // If the name field is set, it's a property, followed by the data
+    if (data.getName()) {
+       // Add the length of the string for the name of the variable
+       size_t namelength = data.getNameSize();
+       boost::uint16_t enclength = namelength;
+       swapBytes(&enclength, 2);
+       *buf += enclength;
+       // Now the name itself
+       string name = data.getName();
+       if (name.size() > 0) {
+           *buf += name;
+       }
+    }
+
+    if (data.propertySize() > 0) {
+       vector<boost::shared_ptr<amf::Element> >::reverse_iterator ait;    
+       vector<boost::shared_ptr<amf::Element> > props = data.getProperties();
+       for (ait = props.rbegin(); ait != props.rend(); ait++) {
+           boost::shared_ptr<amf::Element> el = (*(ait));
+           boost::shared_ptr<amf::Buffer> item = AMF::encodeElement(el);
+           if (item) {
+               *buf += item;
+               item.reset();
+           } else {
+               break;
+           }
+           //      el->dump();
+       }
+    }
+    
+    // Terminate the object
+    *buf += '\0';
+    *buf += '\0';
+    *buf += TERMINATOR;
 
     return buf;
 }
@@ -287,7 +386,7 @@
 ///
 /// @return a binary AMF packet in big endian format (header,data)
 boost::shared_ptr<Buffer>
-AMF::encodeReference(const Network::byte_t * /* data */, size_t /* size */)
+AMF::encodeReference(const boost::uint8_t * /* data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
     boost::shared_ptr<Buffer> buf;
@@ -304,7 +403,7 @@
 ///
 /// @return a binary AMF packet in big endian format (header,data)
 boost::shared_ptr<Buffer>
-AMF::encodeMovieClip(const Network::byte_t * /*data */, size_t /* size */)
+AMF::encodeMovieClip(const boost::uint8_t * /*data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
     boost::shared_ptr<Buffer> buf;
@@ -323,12 +422,46 @@
 ///
 /// @return a binary AMF packet in big endian format
 boost::shared_ptr<Buffer>
-AMF::encodeECMAArray(const Network::byte_t * /*data */, size_t /* size */)
+AMF::encodeECMAArray(const amf::Element &data)
 {
 //    GNASH_REPORT_FUNCTION;
-    boost::shared_ptr<Buffer> buf;
-    log_unimpl("ECMA Array AMF objects not supported yet");
+    boost::uint32_t length;
+    length = data.propertySize();
+    //    log_debug("Encoded data size has %d properties", length);
+    boost::shared_ptr<amf::Buffer> buf(new amf::Buffer);
+    if (length == 0) {
+       // an undefined array is only 5 bytes, 1 for the type and
+       // 4 for the length.
+       buf->resize(5);
+    }
+    *buf = Element::ECMA_ARRAY_AMF0;
+    length = 1;
+    swapBytes(&length, sizeof(boost::uint32_t));
+    *buf += length;
+
+    // At lest for red5, it seems to encode from the last item to the
+    // first, so we do the same for now.
+    if (data.propertySize() > 0) {
+       vector<boost::shared_ptr<amf::Element> >::reverse_iterator ait;    
+       vector<boost::shared_ptr<amf::Element> > props = data.getProperties();
+       for (ait = props.rbegin(); ait != props.rend(); ait++) {
+           boost::shared_ptr<amf::Element> el = (*(ait));
+           boost::shared_ptr<amf::Buffer> item = AMF::encodeElement(el);
+           if (item) {
+               *buf += item;
+               item.reset();
+           } else {
+               break;
+           }
+           //el->dump();
+       }
+    }
     
+    // Terminate the object
+    *buf += '\0';
+    *buf += '\0';
+    *buf += TERMINATOR;
+
     return buf;
 }
 
@@ -340,7 +473,7 @@
 ///
 /// @return a binary AMF packet in big endian format
 boost::shared_ptr<Buffer>
-AMF::encodeLongString(const Network::byte_t * /* data */, size_t /* size */)
+AMF::encodeLongString(const boost::uint8_t * /* data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
     boost::shared_ptr<Buffer> buf;
@@ -357,7 +490,7 @@
 ///
 /// @return a binary AMF packet in big endian format
 boost::shared_ptr<Buffer>
-AMF::encodeRecordSet(const Network::byte_t * /* data */, size_t /* size */)
+AMF::encodeRecordSet(const boost::uint8_t * /* data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
     boost::shared_ptr<Buffer> buf;
@@ -366,7 +499,7 @@
     return buf;
 }
 
-/// \brief Encode a Strict Array to it's serialized representation.
+/// \brief Encode a Strict Array to it's serialized represenicttation.
 ///    A Strict Array is one where all the items are the same
 ///    data type, commonly either a number or a string.
 ///
@@ -376,11 +509,72 @@
 ///
 /// @return a binary AMF packet in big endian format (header,data)
 boost::shared_ptr<Buffer>
-AMF::encodeStrictArray(const Network::byte_t * /* data */, size_t /* size */)
+AMF::encodeStrictArray(const amf::Element &data)
 {
-//    GNASH_REPORT_FUNCTION;
-    boost::shared_ptr<Buffer> buf;
-    log_unimpl("Strict Array AMF objects not supported yet");
+    GNASH_REPORT_FUNCTION;
+    boost::uint32_t items;
+    items = data.propertySize();
+    //    log_debug("Encoded data size has %d properties", items);
+    boost::shared_ptr<amf::Buffer> buf(new amf::Buffer);
+    if (items) {
+       buf.reset(new amf::Buffer);
+    } else {
+       // an undefined array is only 5 bytes, 1 for the type and
+       // 4 for the length.
+       buf->resize(5);
+       //      buf.reset(new amf::Buffer(5));
+    }
+    *buf = Element::STRICT_ARRAY_AMF0;
+    swapBytes(&items, sizeof(boost::uint32_t));
+    *buf += items;
+
+    if (data.propertySize() > 0) {
+       vector<boost::shared_ptr<amf::Element> >::const_iterator ait;    
+       vector<boost::shared_ptr<amf::Element> > props = data.getProperties();
+       bool skip = false;
+       size_t counter = 0;
+       for (ait = props.begin(); ait != props.end(); ait++) {
+           counter++;
+           boost::shared_ptr<amf::Element> el = (*(ait));
+           // If we see an undefined data item, then switch to an ECMA
+           // array which is more compact. At least this is what Red5 does.
+           if (el->getType() == Element::UNDEFINED_AMF0) {
+               if (!skip) {
+                   *buf->reference() = Element::ECMA_ARRAY_AMF0;
+                   // When returning an ECMA array for a sparsely populated
+                   // array, Red5 adds one more to the count to be 1 based,
+                   // instead of zero based.
+                   boost::uint32_t moreitems = data.propertySize() + 1;
+                   swapBytes(&moreitems, sizeof(boost::uint32_t));
+                   boost::uint8_t *ptr = buf->reference() + 1;
+                   memcpy(ptr, &moreitems, sizeof(boost::uint32_t));
+                   skip = true;
+               }
+               continue;
+           } else {
+               if (skip) {
+                   skip = false;
+                   char num[12];
+                   sprintf(num, "%d", counter);
+                   amf::Element elnum(num, el->to_number());
+                   *buf += AMF::encodeElement(elnum);
+                   double nodes = items;
+                   amf::Element ellen("length", nodes);
+                   *buf += AMF::encodeElement(ellen);
+               } else {
+                   boost::shared_ptr<amf::Buffer> item = 
AMF::encodeElement(el);
+                   if (item) {
+                       *buf += item;
+                       item.reset();
+                       continue;
+                   } else {
+                       break;
+                   }
+               }
+           }
+//         el->dump();
+       }
+    }
     
     return buf;
 }
@@ -393,7 +587,7 @@
 boost::shared_ptr<Buffer>
 AMF::encodeString(const string &str)
 {
-    Network::byte_t *ptr = const_cast<Network::byte_t 
*>(reinterpret_cast<const Network::byte_t *>(str.c_str()));
+    boost::uint8_t *ptr = const_cast<boost::uint8_t *>(reinterpret_cast<const 
boost::uint8_t *>(str.c_str()));
     return encodeString(ptr, str.size());
 }
 
@@ -405,18 +599,16 @@
 ///
 /// @return a binary AMF packet in big endian format
 boost::shared_ptr<Buffer>
-AMF::encodeString(Network::byte_t *data, size_t size)
+AMF::encodeString(boost::uint8_t *data, size_t size)
 {
 //    GNASH_REPORT_FUNCTION;
-    boost::uint16_t length;
-    
     boost::shared_ptr<Buffer>buf(new Buffer(size + AMF_HEADER_SIZE));
     *buf = Element::STRING_AMF0;
     // when a string is stored in an element, we add a NULL terminator so
     // it can be printed by to_string() efficiently. The NULL terminator
     // doesn't get written when encoding a string as it has a byte count
     // instead.
-    length = size;
+    boost::uint16_t length = size;
 //    log_debug("Encoded data size is going to be %d", length);
     swapBytes(&length, 2);
     *buf += length;
@@ -480,10 +672,68 @@
 AMF::encodeElement(const amf::Element& el)
 {
 //    GNASH_REPORT_FUNCTION;
-    size_t outsize = el.getNameSize() + el.getDataSize() + 
AMF_PROP_HEADER_SIZE;
-
+#if 0
+    size_t outsize = 0;
+
+    // Simple Elements have everything contained in just the class itself.
+    // If thr name is set, it's a property, so the length is
+    // prefixed to the name string.
+    if (el.getNameSize()) {
+       outsize += el.getNameSize() + sizeof(boost::uint16_t);
+    }
+    // If there is any data, then the size of the data plus the header
+    // of the type and the length is next.
+    if (el.getDataSize()) {
+       outsize += el.getDataSize() + AMF_HEADER_SIZE;
+    }
+
+    // More complex messages have child elements, either properties or
+    // the items in an array, If we have children, count up their size too.
+    // Calculate the total size of the message
+    vector<boost::shared_ptr<amf::Element> > props = el.getProperties();
+    for (size_t i=0; i<props.size(); i++) {
+       outsize += props[i]->getDataSize();
+       if (props[i]->getNameSize()) {
+           outsize += props[i]->getNameSize();
+           outsize += amf::AMF_PROP_HEADER_SIZE;
+       } else {
+           outsize += amf::AMF_HEADER_SIZE;
+       }
+    }
+
+    // If an array has no data, it's undefined, so has a length of zero.
+    if (el.getType() == Element::STRICT_ARRAY_AMF0) {
+       if ((el.getDataSize() == 0) && (props.size() == 0)) {
+           outsize += sizeof(boost::uint32_t) + 1;
+       }
+    }
+
+    // An encoded number is always 8 bytes (a double) plus one byte
+    // for the type field.
+    if (el.getType() == Element::NUMBER_AMF0) {
+       outsize = AMF0_NUMBER_SIZE + 1;
+    }
+    
+    // Several types have no data when encoded, like NULL, Undefined,
+    // and Unsupported, so we only need enough room to store the header
+    // type field, which is only 1 byte.
+    if (outsize == 0) {
+       outsize = 1;
+    }
+    // Arrays have an additional 4 byte long field to hold the
+    // number of items in the array.
+    if ((el.getType() == Element::STRICT_ARRAY_AMF0)
+       || (el.getType() == Element::ECMA_ARRAY_AMF0)) {
+       log_debug("Array has %d items", props.size());
+       outsize += sizeof(boost::uint32_t);
+    }
+    if ((outsize <= 0) || (outsize > 0xffff)) {
+       log_error("Outsize is out of range!", outsize);
+       el.dump();
+    }
     boost::shared_ptr<Buffer> buf(new Buffer(outsize));
-//    log_debug("AMF::%s: Outsize is: %d", __FUNCTION__, outsize);
+    log_debug("AMF::%s: Outsize is: %d", __FUNCTION__, outsize);
+
     // If the name field is set, it's a property, followed by the data
     if (el.getName()) {
        // Add the length of the string for the name of the variable
@@ -497,7 +747,9 @@
            *buf += name;
        }
     }
+#endif
 
+    boost::shared_ptr<Buffer> buf;
     // Encode the element's data
     switch (el.getType()) {
       case Element::NOTYPE:
@@ -505,71 +757,77 @@
          break;
       case Element::NUMBER_AMF0:
       {
-         boost::shared_ptr<Buffer> encnum = AMF::encodeNumber(el.to_number());
-         *buf += encnum;
-//       *buf += encodeNumber(el.to_number());
+  //     boost::shared_ptr<Buffer> encnum = AMF::encodeNumber(el.to_number());
+  //     *buf += encnum;
+         buf = AMF::encodeNumber(el.to_number());
           break;
       }
       case Element::BOOLEAN_AMF0:
       {
-         boost::shared_ptr<Buffer> encbool = AMF::encodeBoolean(el.to_bool());
-         *buf += encodeBoolean(el.to_bool());
-         *buf += encbool;
+//       boost::shared_ptr<Buffer> encbool = AMF::encodeBoolean(el.to_bool());
+//       *buf += encodeBoolean(el.to_bool());
+//       *buf += encbool;
+         buf = AMF::encodeBoolean(el.to_bool());
           break;
       }
       case Element::STRING_AMF0:
       {
-         boost::shared_ptr<Buffer> encstr = AMF::encodeString(el.to_string());
-         *buf += encstr;
-//       *buf += encodeString(el.to_reference(), el.getDataSize());
+  //     boost::shared_ptr<Buffer> encstr = AMF::encodeString(el.to_string());
+         //      *buf += encstr;
+         buf = encodeString(el.to_string());
          break;
       }
       case Element::OBJECT_AMF0:
-         // tmp = el.encode();
-         log_unimpl("FIXME: Element::encode() temporarily disabled.");
+         buf = encodeObject(el);
           break;
       case Element::MOVIECLIP_AMF0:
-         *buf += encodeMovieClip(el.to_reference(), el.getDataSize());
+         buf = encodeMovieClip(el.to_reference(), el.getDataSize());
           break;
       case Element::NULL_AMF0:
-         *buf += encodeNull();
+         //      *buf += Element::NULL_AMF0;
+         buf = encodeNull();
           break;
       case Element::UNDEFINED_AMF0:
-         *buf += encodeUndefined();
+         //      *buf += Element::UNDEFINED_AMF0;
+         buf = encodeUndefined();
          break;
       case Element::REFERENCE_AMF0:
-         *buf += encodeReference(el.to_reference(), el.getDataSize());
+         buf = encodeReference(el.to_reference(), el.getDataSize());
           break;
       case Element::ECMA_ARRAY_AMF0:
-         *buf += encodeECMAArray(el.to_reference(), el.getDataSize());
+         buf = encodeECMAArray(el);
           break;
          // The Object End gets added when creating the object, so we can just 
ignore it here.
       case Element::OBJECT_END_AMF0:
-         *buf += encodeObjectEnd();
+         buf = encodeObjectEnd();
           break;
       case Element::STRICT_ARRAY_AMF0:
-         *buf += encodeStrictArray(el.to_reference(), el.getDataSize());
+      {
+         buf = AMF::encodeStrictArray(el);
           break;
+      }
       case Element::DATE_AMF0:
-         *buf += encodeDate(el.to_reference());
+      {
+  //     boost::shared_ptr<Buffer> encdate = AMF::encodeNumber(el.to_number());
+         buf = AMF::encodeDate(el.to_reference());
           break;
+      }
       case Element::LONG_STRING_AMF0:
-         *buf += encodeLongString(el.to_reference(), el.getDataSize());
+         buf = encodeLongString(el.to_reference(), el.getDataSize());
           break;
       case Element::UNSUPPORTED_AMF0:
-         *buf += encodeUnsupported();
+         buf = encodeUnsupported();
           break;
       case Element::RECORD_SET_AMF0:
-         *buf += encodeRecordSet(el.to_reference(), el.getDataSize());
+         buf = encodeRecordSet(el.to_reference(), el.getDataSize());
           break;
       case Element::XML_OBJECT_AMF0:
-         *buf += encodeXMLObject(el.to_reference(), el.getDataSize());
+         buf = encodeXMLObject(el.to_reference(), el.getDataSize());
           // Encode an XML object. The data follows a 4 byte length
           // field. (which must be big-endian)
           break;
       case Element::TYPED_OBJECT_AMF0:
-//       tmp = encodeTypedObject(el.to_reference(), el.getDataSize());
-         buf.reset();
+         buf = encodeTypedObject(el);
           break;
 //       // This is a Gnash specific value
 //       case Element::VARIABLE:
@@ -583,9 +841,23 @@
           break;
     };
 
-//     if (tmp) {
-//         *buf += *tmp;
-//     }
+    // If the name field is set, it's a property, followed by the data
+    if (el.getName() && (el.getType() != Element::TYPED_OBJECT_AMF0)) {
+       boost::shared_ptr<Buffer> bigbuf(new amf::Buffer(el.getNameSize() + 
sizeof(boost::uint16_t) + buf->size()));
+       // Add the length of the string for the name of the variable
+       size_t length = el.getNameSize();
+       boost::uint16_t enclength = length;
+       swapBytes(&enclength, 2);
+       *bigbuf = enclength;
+       // Now the name itself
+       string name = el.getName();
+       if (name.size() > 0) {
+           *bigbuf += name;
+       }
+       *bigbuf += buf;
+       return bigbuf;
+    }
+    
     return buf;
 }
 
@@ -656,8 +928,8 @@
 AMF::extractAMF(boost::shared_ptr<Buffer> buf)
 {
 //    GNASH_REPORT_FUNCTION;
-    Network::byte_t* start = buf->reference();
-    Network::byte_t* tooFar = start+buf->size();
+    boost::uint8_t* start = buf->reference();
+    boost::uint8_t* tooFar = start+buf->size();
     
     return extractAMF(start, tooFar);
 }
@@ -674,11 +946,11 @@
 ///
 /// @remarks May throw a ParserException
 boost::shared_ptr<amf::Element> 
-AMF::extractAMF(Network::byte_t *in, Network::byte_t* tooFar)
+AMF::extractAMF(boost::uint8_t *in, boost::uint8_t* tooFar)
 {
 //    GNASH_REPORT_FUNCTION;
 
-    Network::byte_t *tmpptr = in;
+    boost::uint8_t *tmpptr = in;
     boost::uint16_t length;
     boost::shared_ptr<amf::Element> el(new Element);
 
@@ -703,7 +975,7 @@
     // Jump through hoops to get the type so valgrind stays happy
 //    char c = *(reinterpret_cast<char *>(tmpptr));
     Element::amf0_type_e type = static_cast<Element::amf0_type_e>(*tmpptr);
-    tmpptr++;                        // skip past the header byte
+    tmpptr++;                        // skip past the header type field byte
 
     switch (type) {
       case Element::NUMBER_AMF0:
@@ -712,8 +984,8 @@
          swapBytes(&swapped, amf::AMF0_NUMBER_SIZE);
          el->makeNumber(swapped); 
          tmpptr += AMF0_NUMBER_SIZE; // all numbers are 8 bit big endian
+         break;
       }
-         break;
       case Element::BOOLEAN_AMF0:
          el->makeBoolean(tmpptr);
          tmpptr += 1;          // sizeof(bool) isn't always 1 for all 
compilers 
@@ -764,13 +1036,21 @@
          log_debug("AMF0 MovieClip frame");
          break;
       case Element::NULL_AMF0:
+         el->makeNull();
+         break;
       case Element::UNDEFINED_AMF0:
+         el->makeUndefined();
+         break;
       case Element::REFERENCE_AMF0:
+         el->makeReference();
+         break;
+         // An ECMA array is comprised of any of the data types. Much like an 
Object,
+         // the ECMA array is terminated by the end of object bytes, so parse 
till then.
       case Element::ECMA_ARRAY_AMF0:
       {
          el->makeECMAArray();
          // get the number of elements in the array
-         length = ntohs((*(boost::uint32_t *)tmpptr) & 0xffff);
+         boost::uint32_t items = ntohl((*(boost::uint32_t *)tmpptr) & 
0xffffffff);
          tmpptr += sizeof(boost::uint32_t);
          while (tmpptr < (tooFar - AMF_HEADER_SIZE)) {
              if (*tmpptr == TERMINATOR) {
@@ -791,38 +1071,75 @@
       }
       case Element::OBJECT_END_AMF0:
          // A strict array is only numbers
+         break;
       case Element::STRICT_ARRAY_AMF0:
       {
          el->makeStrictArray();
          // get the number of numbers in the array
-         length = ntohl((*(boost::uint32_t *)tmpptr));
-//       log_debug("Strict Array, body size is %d.", length);
-         tmpptr += sizeof(boost::uint32_t) + 1;
-         // each number is 8 bytes, plus one byte for the type.
-         tooFar = tmpptr += length * AMF0_NUMBER_SIZE + 1;
-//       boost::shared_ptr<amf::Element> name = amf_obj.extractAMF(tmpptr, 
tooFar);
-//       tmpptr += amf_obj.totalsize();
-//       el->setName(name->getName());
-         length -= 2;
-         while (length) {
+         boost::uint32_t items = ntohl((*(boost::uint32_t *)tmpptr));
+         // Skip past the length field to get to the start of the data
+         tmpptr += sizeof(boost::uint32_t);
+         while (items) {
              boost::shared_ptr<amf::Element> child = 
amf_obj.extractAMF(tmpptr, tooFar); 
              if (child == 0) {
                  break;
              } else {
-//               child->dump();
+//               child->dump();
                  el->addProperty(child);
                  tmpptr += amf_obj.totalsize();
-                 length -= amf_obj.totalsize();
+                 --items;
              }
          };
          break;
       }
       case Element::DATE_AMF0:
+      {
+         double swapped = *reinterpret_cast<const double*>(tmpptr);
+         swapBytes(&swapped, amf::AMF0_NUMBER_SIZE);
+         el->makeDate(swapped);
+         tmpptr += AMF0_NUMBER_SIZE; // all dates are 8 bit big endian numbers
+         break;
+      }
       case Element::LONG_STRING_AMF0:
+         el->makeLongString(tmpptr);
+         break;
       case Element::UNSUPPORTED_AMF0:
+         el->makeUnsupported(tmpptr);
+         tmpptr += 1;
+         break;
       case Element::RECORD_SET_AMF0:
+         el->makeRecordSet(tmpptr);
+         break;
       case Element::XML_OBJECT_AMF0:
+         el->makeXMLObject(tmpptr);
+         break;
       case Element::TYPED_OBJECT_AMF0:
+      {
+         el->makeTypedObject();
+         // a Typed Object has a name
+         length = ntohs((*(boost::uint16_t *)tmpptr) & 0xffff);
+         tmpptr += sizeof(boost::uint16_t);
+         el->setName(tmpptr, length);
+         tmpptr += length;
+         while (tmpptr < tooFar) { // FIXME: was tooFar - AMF_HEADER_SIZE)
+             if (*tmpptr == TERMINATOR) {
+//               log_debug("No data associated with Property in object");
+                 tmpptr++;
+                 break;
+             }
+             boost::shared_ptr<amf::Element> child = 
amf_obj.extractProperty(tmpptr, tooFar); 
+             if (child == 0) {
+                 // skip past zero length string (2 bytes), null (1 byte) and 
end object (1 byte)
+                 tmpptr += AMF_HEADER_SIZE;
+                 break;
+             }
+     //              child->dump();
+             el->addProperty(child);
+             tmpptr += amf_obj.totalsize();
+         };
+//       tmpptr += AMF_HEADER_SIZE;            // skip past the terminator 
bytes
+         break;
+      }
       case Element::AMF3_DATA:
       default:
          log_unimpl("%s: type %d", __PRETTY_FUNCTION__, (int)type);
@@ -851,14 +1168,14 @@
 {
 //    GNASH_REPORT_FUNCTION;
 
-    Network::byte_t* start = buf->reference();
-    Network::byte_t* tooFar = start+buf->size();
+    boost::uint8_t* start = buf->reference();
+    boost::uint8_t* tooFar = start+buf->size();
     return extractProperty(start, tooFar);
 }
 
 /// \brief Extract a Property.
 ///    A Property is a standard AMF object preceeded by a
-///    length and an ASCII name field. These are only used
+///    length and an ASCII name field. These are onicly used
 ///    with higher level ActionScript objects.
 ///
 /// @param in A real pointer to the raw data to start parsing from.
@@ -870,11 +1187,11 @@
 ///
 /// @remarks May throw a ParserException
 boost::shared_ptr<amf::Element> 
-AMF::extractProperty(Network::byte_t *in, Network::byte_t* tooFar)
+AMF::extractProperty(boost::uint8_t *in, boost::uint8_t* tooFar)
 {
 //    GNASH_REPORT_FUNCTION;
     
-    Network::byte_t *tmpptr = in;
+    boost::uint8_t *tmpptr = in;
     boost::uint16_t length;
     boost::shared_ptr<amf::Element> el;
 

=== modified file 'libamf/amf.h'
--- a/libamf/amf.h      2008-11-18 22:56:10 +0000
+++ b/libamf/amf.h      2008-12-23 02:58:01 +0000
@@ -26,10 +26,6 @@
 #ifndef _AMF_H_
 #define _AMF_H_
 
-#ifdef HAVE_CONFIG_H
-#include "gnashconfig.h"
-#endif
-
 #include <vector>
 #include <string>
 #include <cstring>
@@ -37,7 +33,6 @@
 #include <boost/cstdint.hpp>
 #include <boost/shared_ptr.hpp>
 
-#include "network.h"
 #include "element.h"
 #include "dsodefs.h"
 
@@ -54,7 +49,7 @@
 /// \brief The header size in bytes of an common AMF object.
 ///    The size of an AMF header is a type field (1 byte), followed by a
 ///    length field. (short)
-const gnash::Network::byte_t AMF_HEADER_SIZE = 3;
+const boost::uint8_t AMF_HEADER_SIZE = 3;
 
 /// \brief  The header size of a property.
 ///    A property is a little different. It always assumes the the
@@ -62,13 +57,13 @@
 ///    type byte like a regular AMF object and length is used for the
 ///    data. So a property object header is then only 5 bytes instead
 ///    of the 6 that one assumes would be used.
-const gnash::Network::byte_t AMF_PROP_HEADER_SIZE = 5;
+const boost::uint8_t AMF_PROP_HEADER_SIZE = 5;
 
 /// AMF version 0 is supported by default
-const gnash::Network::byte_t AMF_VERSION = 0;
+const boost::uint8_t AMF_VERSION = 0;
 
 /// For terminating sequences, a byte with value 0x09 is used.
-const gnash::Network::byte_t TERMINATOR = 0x09;
+const boost::uint8_t TERMINATOR = 0x09;
 
 /// \brief The maximum size for a string.
 /// As if there is a parsing error, we'll often see the symptom of the length
@@ -151,7 +146,7 @@
     ///
     /// @return a binary AMF packet in big endian format
     ///
-    static boost::shared_ptr<Buffer> encodeString(gnash::Network::byte_t 
*data, size_t size);
+    static boost::shared_ptr<Buffer> encodeString(boost::uint8_t *data, size_t 
size);
 
     /// Encode a String object to its serialized representation.
     //
@@ -197,7 +192,7 @@
     ///
     /// @return a binary AMF packet in big endian format
     ///
-    static boost::shared_ptr<Buffer> encodeXMLObject(const 
gnash::Network::byte_t *data, size_t nbytes);
+    static boost::shared_ptr<Buffer> encodeXMLObject(const boost::uint8_t 
*data, size_t nbytes);
 
     /// Encode a Typed Object to its serialized representation.
     //
@@ -207,7 +202,7 @@
     ///
     /// @return a binary AMF packet in big endian format
     ///
-    static boost::shared_ptr<Buffer> encodeTypedObject(gnash::Network::byte_t 
*data, size_t size);
+    static boost::shared_ptr<Buffer> encodeTypedObject(const amf::Element 
&data);
 
     /// Encode a Reference to an object to its serialized representation.
     //
@@ -217,7 +212,7 @@
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static boost::shared_ptr<Buffer> encodeReference(const 
gnash::Network::byte_t *data, size_t size);
+    static boost::shared_ptr<Buffer> encodeReference(const boost::uint8_t 
*data, size_t size);
 
     /// Encode a Movie Clip (swf data) to its serialized representation.
     //
@@ -227,7 +222,7 @@
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static boost::shared_ptr<Buffer> encodeMovieClip(const 
gnash::Network::byte_t *data, size_t size);
+    static boost::shared_ptr<Buffer> encodeMovieClip(const boost::uint8_t 
*data, size_t size);
 
     /// Encode an ECMA Array to its serialized representation.
     //
@@ -240,7 +235,7 @@
     ///
     /// @return a binary AMF packet in big endian format
     ///
-    static boost::shared_ptr<Buffer> encodeECMAArray(const 
gnash::Network::byte_t *data, size_t size);
+    static boost::shared_ptr<Buffer> encodeECMAArray(const amf::Element &data);
 
     /// Encode a Long String to its serialized representation.
     //
@@ -250,7 +245,7 @@
     ///
     /// @return a binary AMF packet in big endian format
     ///
-    static boost::shared_ptr<Buffer> encodeLongString(const 
gnash::Network::byte_t *data, size_t size);
+    static boost::shared_ptr<Buffer> encodeLongString(const boost::uint8_t 
*data, size_t size);
 
     /// Encode a Record Set to its serialized representation.
     //
@@ -260,7 +255,7 @@
     ///
     /// @return a binary AMF packet in big endian format
     ///
-    static boost::shared_ptr<Buffer> encodeRecordSet(const 
gnash::Network::byte_t *data, size_t size);
+    static boost::shared_ptr<Buffer> encodeRecordSet(const boost::uint8_t 
*data, size_t size);
 
     /// Encode a Date to its serialized representation.
     //
@@ -268,7 +263,7 @@
     /// 
     /// @return a binary AMF packet in big endian format
     ///
-    static boost::shared_ptr<Buffer> encodeDate(const gnash::Network::byte_t 
*data);
+    static boost::shared_ptr<Buffer> encodeDate(const boost::uint8_t *data);
 
     /// Encode a Strict Array to its serialized representation.
     //
@@ -281,7 +276,7 @@
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static boost::shared_ptr<Buffer> encodeStrictArray(const 
gnash::Network::byte_t *data, size_t size);
+    static boost::shared_ptr<Buffer> encodeStrictArray(const amf::Element 
&data);
     
     /// Encode an object to its serialized representation.
     //
@@ -289,7 +284,7 @@
     /// 
     /// @return a binary AMF packet in big endian format
     ///
-    static boost::shared_ptr<Buffer> 
encodeObject(boost::shared_ptr<amf::Element> el);
+    static boost::shared_ptr<Buffer> encodeObject(const amf::Element &data);
 
     /// Encode the end of an object to its serialized representation.
     //
@@ -343,7 +338,7 @@
     ///
     /// @return The data type from the header
     ///
-    static Element::amf0_type_e extractElementHeader(gnash::Network::byte_t 
*in)
+    static Element::amf0_type_e extractElementHeader(boost::uint8_t *in)
                          { return *(reinterpret_cast<Element::amf0_type_e 
*>(in)); };
 
     /// Extract an AMF object from an array of raw bytes.
@@ -359,7 +354,7 @@
     ///
     /// @remarks May throw a ParserException
     ///
-    boost::shared_ptr<amf::Element> extractAMF(gnash::Network::byte_t *in, 
gnash::Network::byte_t* tooFar);
+    boost::shared_ptr<amf::Element> extractAMF(boost::uint8_t *in, 
boost::uint8_t* tooFar);
 
     /// Extract an AMF object from an array of raw bytes.
     //
@@ -386,7 +381,7 @@
     ///
     /// @remarks May throw a ParserException
     ///
-    boost::shared_ptr<amf::Element> extractProperty(gnash::Network::byte_t 
*in, gnash::Network::byte_t* tooFar);
+    boost::shared_ptr<amf::Element> extractProperty(boost::uint8_t *in, 
boost::uint8_t* tooFar);
 
     /// Extract a Property.
     //

=== modified file 'libamf/amfutf8.h'
--- a/libamf/amfutf8.h  2008-01-21 22:55:26 +0000
+++ b/libamf/amfutf8.h  2008-12-20 17:11:55 +0000
@@ -18,10 +18,6 @@
 #ifndef _AMFUTF8_H_
 #define _AMFUTF8_H_
 
-#ifdef HAVE_CONFIG_H
-#include "gnashconfig.h"
-#endif
-
 #include <vector>
 
 namespace amf

=== modified file 'libamf/buffer.cpp'
--- a/libamf/buffer.cpp 2008-12-15 23:02:24 +0000
+++ b/libamf/buffer.cpp 2008-12-23 02:57:22 +0000
@@ -26,7 +26,7 @@
 #include "buffer.h"
 #include "amf.h"
 #include "log.h"
-#include "network.h"
+//#include "network.h"
 #include "GnashException.h"
 
 using namespace std;
@@ -43,8 +43,8 @@
 /// @param digit The digit as a hex value
 ///
 /// @return The byte as a decimal value.
-Network::byte_t
-Buffer::hex2digit (Network::byte_t digit)
+boost::uint8_t
+Buffer::hex2digit (boost::uint8_t digit)
 {  
     if (digit == 0)
         return 0;
@@ -73,10 +73,10 @@
 //    GNASH_REPORT_FUNCTION;
     size_t count = str.size();
     size_t size = (count/3) + 1;
-    Network::byte_t ch = 0;
+    boost::uint8_t ch = 0;
     
-    Network::byte_t *ptr = const_cast<Network::byte_t 
*>(reinterpret_cast<const Network::byte_t *>(str.c_str()));
-    Network::byte_t *end = ptr + count;
+    boost::uint8_t *ptr = const_cast<boost::uint8_t *>(reinterpret_cast<const 
boost::uint8_t *>(str.c_str()));
+    boost::uint8_t *end = ptr + count;
 
     init(size);
     
@@ -107,7 +107,7 @@
 {
 //    GNASH_REPORT_FUNCTION;
     if (!_data) {
-       _data.reset(new Network::byte_t[size]);
+       _data.reset(new boost::uint8_t[size]);
        _seekptr = _data.get();
     }
     _seekptr = _data.get();
@@ -126,8 +126,8 @@
     : _seekptr(0)
 {
 //    GNASH_REPORT_FUNCTION;
-    _nbytes = gnash::NETBUFSIZE;
-    init(gnash::NETBUFSIZE);
+    _nbytes = amf::NETBUFSIZE;
+    init(amf::NETBUFSIZE);
 }
     
 /// \brief Create a new Buffer with a size other than the default
@@ -176,7 +176,7 @@
 ///            
 /// @return A reference to a Buffer.
 Buffer &
-Buffer::copy(Network::byte_t *data, size_t nbytes)
+Buffer::copy(boost::uint8_t *data, size_t nbytes)
 {    
 //    GNASH_REPORT_FUNCTION;
     if (_data) {
@@ -197,7 +197,7 @@
 ///            
 /// @return A reference to a Buffer.
 Buffer &
-Buffer::append(gnash::Network::byte_t *data, size_t nbytes)
+Buffer::append(boost::uint8_t *data, size_t nbytes)
 {
 //    GNASH_REPORT_FUNCTION;
     if (_data) {
@@ -221,7 +221,7 @@
 Buffer::operator+=(Buffer &buf)
 {
 // //    GNASH_REPORT_FUNCTION;
-    append(buf.reference(), buf.size());
+    append(buf.reference(), buf.allocated());
     return *this;
 }
 
@@ -235,7 +235,7 @@
 Buffer::operator+=(amf::Element::amf0_type_e type)
 {
 //    GNASH_REPORT_FUNCTION;
-    Network::byte_t nb = static_cast<Network::byte_t>(type);
+    boost::uint8_t nb = static_cast<boost::uint8_t>(type);
     
     return operator+=(nb);
 }
@@ -249,7 +249,7 @@
 Buffer::operator+=(char byte)
 {
 //    GNASH_REPORT_FUNCTION;
-    Network::byte_t nb = static_cast<Network::byte_t>(byte);
+    boost::uint8_t nb = static_cast<boost::uint8_t>(byte);
     return operator+=(nb);
 }
 
@@ -262,7 +262,7 @@
 Buffer::operator+=(bool flag)
 {
 //    GNASH_REPORT_FUNCTION;
-    Network::byte_t nb = static_cast<Network::byte_t>(flag);
+    boost::uint8_t nb = static_cast<boost::uint8_t>(flag);
     return operator+=(nb);
 }
 
@@ -272,12 +272,12 @@
 /// 
 /// @return A reference to a Buffer.
 Buffer &
-Buffer::operator+=(Network::byte_t byte)
+Buffer::operator+=(boost::uint8_t byte)
 {
 //    GNASH_REPORT_FUNCTION;
     if ((_seekptr + 1) <= (_data.get() + _nbytes)) {
        *_seekptr = byte;
-       _seekptr += sizeof(char);
+       _seekptr += sizeof(boost::uint8_t);
     }
     return *this;
 }
@@ -292,7 +292,7 @@
 Buffer::operator+=(const char *str)
 {
 //    GNASH_REPORT_FUNCTION;
-    Network::byte_t *ptr = const_cast<Network::byte_t 
*>(reinterpret_cast<const Network::byte_t *>(str));
+    boost::uint8_t *ptr = const_cast<boost::uint8_t *>(reinterpret_cast<const 
boost::uint8_t *>(str));
     return append(ptr, strlen(str));
     
 }
@@ -307,7 +307,7 @@
 Buffer::operator+=(const std::string &str)
 {
 //    GNASH_REPORT_FUNCTION;
-    Network::byte_t *ptr = const_cast<Network::byte_t 
*>(reinterpret_cast<const Network::byte_t *>(str.c_str()));
+    boost::uint8_t *ptr = const_cast<boost::uint8_t *>(reinterpret_cast<const 
boost::uint8_t *>(str.c_str()));
     return append(ptr, str.size());
     
 }
@@ -321,7 +321,7 @@
 Buffer::operator+=(double num)
 {
 //    GNASH_REPORT_FUNCTION;
-    Network::byte_t *ptr = reinterpret_cast<Network::byte_t *>(&num);
+    boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(&num);
     return append(ptr, AMF0_NUMBER_SIZE);
 }
 
@@ -334,7 +334,7 @@
 Buffer::operator+=(boost::uint16_t length)
 {
 //    GNASH_REPORT_FUNCTION;
-    Network::byte_t *ptr = reinterpret_cast<Network::byte_t *>(&length);
+    boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(&length);
     return append(ptr, sizeof(boost::uint16_t));
 }
 
@@ -347,7 +347,7 @@
 Buffer::operator+=(boost::uint32_t length)
 {
 //    GNASH_REPORT_FUNCTION;
-    Network::byte_t *ptr = reinterpret_cast<Network::byte_t *>(&length);
+    boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(&length);
     return append(ptr, sizeof(boost::uint32_t));
 }
 
@@ -360,7 +360,7 @@
 Buffer::operator+=(boost::shared_ptr<Buffer> &buf)
 {
 //    GNASH_REPORT_FUNCTION;
-    append(buf->reference(), buf->size());
+    append(buf->reference(), buf->allocated());
     return *this;
 }
 
@@ -392,7 +392,7 @@
 Buffer::operator=(const std::string &str)
 {
 //    GNASH_REPORT_FUNCTION;
-    Network::byte_t *ptr = const_cast<Network::byte_t 
*>(reinterpret_cast<const Network::byte_t *>(str.c_str()));
+    boost::uint8_t *ptr = const_cast<boost::uint8_t *>(reinterpret_cast<const 
boost::uint8_t *>(str.c_str()));
     return copy(ptr, str.size());
 }
 
@@ -400,7 +400,7 @@
 Buffer::operator=(const char *str)
 {
 //    GNASH_REPORT_FUNCTION;
-    Network::byte_t *ptr = const_cast<Network::byte_t 
*>(reinterpret_cast<const Network::byte_t *>(str));
+    boost::uint8_t *ptr = const_cast<boost::uint8_t *>(reinterpret_cast<const 
boost::uint8_t *>(str));
     return copy(ptr, strlen(str));
 }
 
@@ -414,7 +414,7 @@
 Buffer::operator=(double num)
 {
 //    GNASH_REPORT_FUNCTION;
-    Network::byte_t *ptr = reinterpret_cast<Network::byte_t *>(&num);
+    boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(&num);
     return copy(ptr, AMF0_NUMBER_SIZE);
 }
 
@@ -428,7 +428,7 @@
 Buffer::operator=(boost::uint16_t length)
 {
 //    GNASH_REPORT_FUNCTION;
-    Network::byte_t *ptr = reinterpret_cast<Network::byte_t *>(&length);
+    boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(&length);
     return copy(ptr, sizeof(boost::uint16_t));
 }
 
@@ -441,8 +441,8 @@
 Buffer &
 Buffer::operator=(amf::Element::amf0_type_e type)
 {
-    Network::byte_t nb = static_cast<Network::byte_t>(type);
-    return operator+=(nb);
+    boost::uint8_t nb = static_cast<boost::uint8_t>(type);
+    return operator=(nb);
 }
 
 /// Copy a boolean into the buffer. This overwrites all data, and
@@ -454,7 +454,7 @@
 Buffer &
 Buffer::operator=(bool flag)
 {
-    Network::byte_t nb = static_cast<Network::byte_t>(flag);
+    boost::uint8_t nb = static_cast<boost::uint8_t>(flag);
     return operator=(nb);
 }
 
@@ -465,7 +465,7 @@
 /// 
 /// @return A reference to a Buffer.
 Buffer &
-Buffer::operator=(gnash::Network::byte_t byte)
+Buffer::operator=(boost::uint8_t byte)
 {
 //    GNASH__FUNCTION;
     return copy(&byte, 1);
@@ -478,7 +478,7 @@
 /// 
 /// @return A reference to a Buffer.
 Buffer &
-Buffer::operator=(gnash::Network::byte_t *data)
+Buffer::operator=(boost::uint8_t *data)
 {
 //    GNASH_REPORT_FUNCTION;
     if (data) {
@@ -531,11 +531,11 @@
 /// @param byte The byte to remove from the buffer.
 ///
 /// @return A real pointer to the base address of the buffer.
-Network::byte_t *
-Buffer::remove(Network::byte_t c)
+boost::uint8_t *
+Buffer::remove(boost::uint8_t c)
 {
 //    GNASH_REPORT_FUNCTION;
-    Network::byte_t *start = std::find(begin(), end(), c);
+    boost::uint8_t *start = std::find(begin(), end(), c);
 
 //    log_debug("Byte is at %x", (void *)start);
     
@@ -559,7 +559,7 @@
 ///            Buffer
 ///
 /// @return A real pointer to the base address of the Buffer.
-Network::byte_t *
+boost::uint8_t *
 Buffer::remove(int start)
 {
 //    GNASH_REPORT_FUNCTION;
@@ -583,7 +583,7 @@
 /// @param range The amount of bytes to remove from the Buffer.
 ///
 /// @return A real pointer to the base address of the Buffer.
-Network::byte_t *
+boost::uint8_t *
 Buffer::remove(int start, int range)
 {
 //    GNASH_REPORT_FUNCTION;
@@ -636,13 +636,13 @@
 Buffer &
 Buffer::resize(size_t size)
 {
-    GNASH_REPORT_FUNCTION;
-    boost::scoped_array<gnash::Network::byte_t> tmp;
+//    GNASH_REPORT_FUNCTION;
+    boost::scoped_array<boost::uint8_t> tmp;
 
     // If we don't have any data yet in this buffer, resizing is cheap, as
     // we don't havce to copy any data.
     if (_seekptr == _data.get()) {
-       _data.reset(new Network::byte_t[size]);
+       _data.reset(new boost::uint8_t[size]);
        _nbytes= size;
        return *this;
     }
@@ -678,7 +678,7 @@
            log_error("amf::Buffer::resize(%d): Truncating data (%d bytes) 
while resizing!", size, used - size);
            used = size;
        }
-       Network::byte_t *newptr = new Network::byte_t[size];
+       boost::uint8_t *newptr = new boost::uint8_t[size];
        std::copy(_data.get(), _data.get() + used, newptr);
        _data.reset(newptr);
        

=== modified file 'libamf/buffer.h'
--- a/libamf/buffer.h   2008-12-01 15:42:49 +0000
+++ b/libamf/buffer.h   2008-12-20 17:11:55 +0000
@@ -19,6 +19,10 @@
 #ifndef __BUFFER_H__
 #define __BUFFER_H__ 1
 
+#ifdef HAVE_CONFIG_H
+#include "gnashconfig.h"
+#endif
+
 #include <boost/cstdint.hpp>
 #include <boost/scoped_array.hpp>
 #include <boost/shared_ptr.hpp>
@@ -28,7 +32,6 @@
 #include "getclocktime.hpp"
 #include "amf.h"
 #include "element.h"
-#include "network.h"
 #include "dsodefs.h"
 
 // _definst_ is the default instance name
@@ -39,6 +42,10 @@
 namespace amf
 {
 
+// Adjust for the constant size
+const size_t NETBUFSIZE = 1448;        // 1500 appears to be the default size 
as used by FMS
+//const size_t NETBUFSIZE = 1357*2;    // 1500 appears to be the default size 
as used by FMS
+
 /// \class Buffer
 ///
 /// This class is used to hold all data for libamf classes. It is a
@@ -114,7 +121,7 @@
     /// @param nbytes The number of bytes to copy.
     ///                
     /// @return A reference to a Buffer.
-    Buffer &copy(gnash::Network::byte_t *data, size_t nbytes);
+    Buffer &copy(boost::uint8_t *data, size_t nbytes);
     
     /// \brief Copy a Buffer class into the buffer.
     ///                This overwrites all data, and resets the seek ptr.
@@ -153,14 +160,14 @@
     /// @param byte A single byte.
     /// 
     /// @return A reference to a Buffer.
-    Buffer &operator=(gnash::Network::byte_t byte);
+    Buffer &operator=(boost::uint8_t byte);
     /// \brief Copy a byte into the buffer.
     ///                This overwrites all data, and resets the seek ptr.
     ///
     /// @param byte A pointer to a single byte.
     /// 
     /// @return A reference to a Buffer.
-    Buffer &operator=(gnash::Network::byte_t *byte);
+    Buffer &operator=(boost::uint8_t *byte);
     /// \brief Copy a AMF0 type into the buffer.
     ///                This overwrites all data, and resets the seek ptr.
     ///
@@ -184,7 +191,7 @@
     /// @param nbytes The number of bytes to append.
     ///                
     /// @return A reference to a Buffer.
-    Buffer &append(gnash::Network::byte_t *data, size_t nbytes);
+    Buffer &append(boost::uint8_t *data, size_t nbytes);
 
     /// \brief Append a Buffer class to existing data in the buffer.
     ///
@@ -226,7 +233,7 @@
     /// @param byte A single byte.
     /// 
     /// @return A reference to a Buffer.
-    Buffer &operator+=(gnash::Network::byte_t byte);
+    Buffer &operator+=(boost::uint8_t byte);
     Buffer &operator+=(char byte);
     /// \brief Append an AMF0 type to existing data in the buffer.
     ///
@@ -249,7 +256,7 @@
     /// @param byte The byte to remove from the buffer.
     ///
     /// @return A real pointer to the base address of the buffer.
-    gnash::Network::byte_t *remove(gnash::Network::byte_t c);
+    boost::uint8_t *remove(boost::uint8_t c);
     /// \brief Drop a byte without resizing.
     ///                This will remove the byte from the Buffer, and then
     ///                move the remaining data to be in the correct
@@ -259,7 +266,7 @@
     ///                Buffer
     ///
     /// @return A real pointer to the base address of the Buffer.
-    gnash::Network::byte_t *remove(int index);
+    boost::uint8_t *remove(int index);
     /// \brief Drop bytes without resizing.
     ///                This will remove the bytes from the Buffer, and then
     ///                move the remaining data to be in the correct
@@ -274,22 +281,22 @@
     /// @param range The amoiunt of bytes to remove from the Buffer.
     ///
     /// @return A real pointer to the base address of the Buffer.
-    gnash::Network::byte_t *remove(int start, int range);
+    boost::uint8_t *remove(int start, int range);
 //    Network::byte_t *remove(char c);
     
     /// \brief Return the base address of the Buffer.
     ///
     /// @return A real pointer to the base address of the Buffer.
-    gnash::Network::byte_t *begin() { return _data.get() ; };
-    gnash::Network::byte_t *reference() { return _data.get(); }
-    const gnash::Network::byte_t *reference() const { return _data.get(); }
+    boost::uint8_t *begin() { return _data.get() ; };
+    boost::uint8_t *reference() { return _data.get(); }
+    const boost::uint8_t *reference() const { return _data.get(); }
 
     /// \brief Return the last address of the Buffer
     ///                Which is the base address plus the total size of the
     ///                Buffer.
     ///
     /// @return A real pointer to the last address of the Buffer with data.
-    gnash::Network::byte_t *end() { return _seekptr; };
+    boost::uint8_t *end() { return _seekptr; };
 
     /// \brief Get the size of the Buffer.
     ///
@@ -326,7 +333,7 @@
     ///                get.
     ///
     /// @return The byte at the specified location.
-    gnash::Network::byte_t operator[](int index) { return _data[index]; };
+    boost::uint8_t operator[](int index) { return _data[index]; };
 
     /// \brief Get the byte at a specified location.
     ///
@@ -334,7 +341,7 @@
     ///                get.
     ///
     /// @return A real pointer to the byte at the specified location.
-    gnash::Network::byte_t *at(int index) { return _data.get() + index; };
+    boost::uint8_t *at(int index) { return _data.get() + index; };
 
     /// \brief How much room is left in the buffer past the seek pointer.
     ///                This is primarily used to see if the buffer is fully
@@ -368,12 +375,12 @@
     /// \var _seekptr
     ///        \brief This is a pointer to the address in the Buffer to
     ///                write data to then next time some is appended.
-    gnash::Network::byte_t *_seekptr;
+    boost::uint8_t *_seekptr;
     
     /// \var _data
     ///        \brief This is the container of the actual data in this
     ///                Buffer.
-    boost::scoped_array<gnash::Network::byte_t> _data;
+    boost::scoped_array<boost::uint8_t> _data;
     
     /// \var _nbytes
     ///        \brief This is the total allocated size of the Buffer.
@@ -401,7 +408,7 @@
     /// @param digit The digit as a hex value
     ///
     /// @return The byte as a decimal value.
-    gnash::Network::byte_t hex2digit (gnash::Network::byte_t digit);
+    boost::uint8_t hex2digit (boost::uint8_t digit);
 };
 
 /// \brief Dump to the specified output stream.

=== modified file 'libamf/element.cpp'
--- a/libamf/element.cpp        2008-11-18 22:58:05 +0000
+++ b/libamf/element.cpp        2008-12-23 02:56:29 +0000
@@ -26,6 +26,7 @@
 #include <cmath>
 #include <climits>
 #include <boost/shared_ptr.hpp>
+#include <boost/cstdint.hpp> // for boost::?int??_t
 
 #include "buffer.h"
 #include "log.h"
@@ -33,7 +34,7 @@
 #include "amfutf8.h"
 #include "utility.h"
 #include "element.h"
-#include <boost/cstdint.hpp> // for boost::?int??_t
+#include "GnashException.h"
 
 using namespace std;
 using namespace gnash;
@@ -287,7 +288,7 @@
 /// \brief Cast the data in this Element to an real pointer to data.
 ///
 /// @return A real pointer to the base address of the raw data in memory.
-gnash::Network::byte_t *
+boost::uint8_t *
 Element::to_reference()
 {
 //    GNASH_REPORT_FUNCTION;
@@ -297,7 +298,7 @@
     return 0;
 };
 
-const gnash::Network::byte_t *
+const boost::uint8_t *
 Element::to_reference() const
 {
 //    GNASH_REPORT_FUNCTION;
@@ -376,6 +377,55 @@
     return false;
 };
 
+size_t
+Element::calculateSize()
+{
+//    GNASH_REPORT_FUNCTION;
+    return calculateSize();
+}
+
+size_t
+Element::calculateSize(amf::Element &el) const
+{
+//    GNASH_REPORT_FUNCTION;    
+    size_t outsize = 0;
+
+    // Simple Elements have everything contained in just the class itself.
+    // If thr name is set, it's a property, so the length is
+    // prefixed to the name string.
+    if (el.getNameSize()) {
+       outsize += el.getNameSize() + sizeof(boost::uint16_t);
+    }
+    // If there is any data, then the size of the data plus the header
+    // of the type and the length is next.
+    if (el.getDataSize()) {
+       outsize += el.getDataSize() + AMF_HEADER_SIZE;
+    }
+
+    // If an array has no data, it's undefined, so has a length of zero.
+    if (el.getType() == Element::STRICT_ARRAY_AMF0) {
+       if (el.getDataSize() == 0) {
+           outsize = sizeof(boost::uint32_t) + 1;
+       }
+    }
+    
+    // More complex messages have child elements, either properties or
+    // the items in an array, If we have children, count up their size too.
+    // Calculate the total size of the message
+    vector<boost::shared_ptr<amf::Element> > props = el.getProperties();
+    for (size_t i=0; i<props.size(); i++) {
+       outsize += props[i]->getDataSize();
+       if (props[i]->getNameSize()) {
+           outsize += props[i]->getNameSize();
+           outsize += amf::AMF_PROP_HEADER_SIZE;
+       } else {
+           outsize += amf::AMF_HEADER_SIZE;
+       }
+    }
+
+    return outsize;
+}
+
 /// \brief Encode this Element (data type object).
 ///    This encodes this Element and all of it's associated
 ///    properties into raw binary data in big endoan format.
@@ -404,7 +454,7 @@
            *buf += enclength;
            string str = _name;
            *buf += str;
-           Network::byte_t byte = static_cast<Network::byte_t>(0x5);
+           boost::uint8_t byte = static_cast<boost::uint8_t>(0x5);
            *buf += byte;
        }
 
@@ -421,7 +471,7 @@
            }
        }
 //     log_debug("FIXME: Terminating object");
-       Network::byte_t pad = 0;
+       boost::uint8_t pad = 0;
        *buf += pad;
        *buf += pad;
        *buf += TERMINATOR;
@@ -521,13 +571,18 @@
 ///
 /// @return A reference to this Element.
 Element &
-Element::makeString(Network::byte_t *data, size_t size)
+Element::makeString(boost::uint8_t *data, size_t size)
 {
 //    GNASH_REPORT_FUNCTION;
     _type = Element::STRING_AMF0;
 
     // Make room for an additional NULL terminator
-    check_buffer(size+1);
+    try {
+       check_buffer(size+1);
+    } catch (std::exception& e) {
+       log_error("%s", e.what());
+       return *this;
+    }
     _buffer->clear();          // FIXME: this could be a performance issue
     _buffer->copy(data, size);
     
@@ -551,7 +606,13 @@
 {
 //    GNASH_REPORT_FUNCTION;
     _type = Element::STRING_AMF0;
-    check_buffer(sizeof(Network::byte_t));
+    try {
+       check_buffer(sizeof(boost::uint8_t));
+    } catch (std::exception& e) {
+       log_error("%s", e.what());
+       return *this;
+    }
+    
     *(_buffer->reference()) = 0;
     return *this;
 }
@@ -568,7 +629,7 @@
 {
 //    GNASH_REPORT_FUNCTION;
     _type = Element::STRING_AMF0;
-    Network::byte_t *ptr = reinterpret_cast<Network::byte_t *>(const_cast<char 
*>(str));
+    boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(const_cast<char 
*>(str));
     return makeString(ptr, size);
 }
 
@@ -620,12 +681,18 @@
 ///
 /// @return A reference to this Element.
 Element &
-Element::makeNumber(Network::byte_t *data)
+Element::makeNumber(boost::uint8_t *data)
 {
 //    GNASH_REPORT_FUNCTION;
     double num = *reinterpret_cast<const double*>(data);
     _type = Element::NUMBER_AMF0;
-    check_buffer(AMF0_NUMBER_SIZE);
+    try {
+       check_buffer(AMF0_NUMBER_SIZE);
+    } catch (std::exception& e) {
+       log_error("%s", e.what());
+       return *this;
+    }
+    
     *_buffer = num;
     
     return *this;
@@ -641,7 +708,13 @@
 {
 //    GNASH_REPORT_FUNCTION;
     _type = Element::NUMBER_AMF0;
-    check_buffer(AMF0_NUMBER_SIZE);
+    try {
+       check_buffer(AMF0_NUMBER_SIZE);
+    } catch (std::exception& e) {
+       log_error("%s", e.what());
+       return *this;
+    }
+    
     *_buffer = num;
 
     return *this;
@@ -662,17 +735,23 @@
     return makeNumber(num);
 }
 
-/// \overload Element::makeNumber(const std::string &name, 
gnash::Network::byte_t *data);
+/// \overload Element::makeNumber(const std::string &name, boost::uint8_t 
*data);
 ///            The size isn't needed as a double is always the same size.
 Element &
-Element::makeNumber(const std::string &name, gnash::Network::byte_t *data)
+Element::makeNumber(const std::string &name, boost::uint8_t *data)
 {
 //    GNASH_REPORT_FUNCTION;
     if (name.size()) {
         setName(name);
     }
     _type = Element::NUMBER_AMF0;
-    check_buffer(AMF0_NUMBER_SIZE);
+    try {
+       check_buffer(AMF0_NUMBER_SIZE);
+    } catch (std::exception& e) {
+       log_error("%s", e.what());
+       return *this;
+    }
+    
     *_buffer = data;
     return *this;
 }
@@ -687,8 +766,14 @@
 {
 //    GNASH_REPORT_FUNCTION;
     _type = Element::BOOLEAN_AMF0;
-    check_buffer(sizeof(bool));
-    *(_buffer->reference()) = flag;
+    try {
+       check_buffer(1);
+    } catch (std::exception& e) {
+       log_error("%s", e.what());
+       return *this;
+    }
+    
+    *_buffer = flag;
 
     return *this;
 }
@@ -717,7 +802,7 @@
 ///
 /// @return A reference to this Element.
 Element &
-Element::makeBoolean(Network::byte_t *data)
+Element::makeBoolean(boost::uint8_t *data)
 {
 //    GNASH_REPORT_FUNCTION;
     bool flag = *reinterpret_cast<const bool*>(data);
@@ -733,6 +818,7 @@
 {
 //    GNASH_REPORT_FUNCTION;
     _type = Element::UNDEFINED_AMF0;
+
     return *this;
 }
 
@@ -858,6 +944,13 @@
     _type = Element::XML_OBJECT_AMF0;
     return *this;
 }
+Element &
+Element::makeXMLObject(boost::uint8_t *data)
+{
+//    GNASH_REPORT_FUNCTION;
+    _type = Element::XML_OBJECT_AMF0;
+    return *this;
+}
 
 /// \brief Make this Element a Property with an XML Object as the value.
 ///
@@ -918,6 +1011,15 @@
     return *this;
 }
 
+Element &
+Element::makeTypedObject()
+{
+//    GNASH_REPORT_FUNCTION;
+    _type = Element::TYPED_OBJECT_AMF0;  
+
+    return *this;
+}
+
 /// \brief Make this Element a Property with an Typed Object as the value.
 ///
 /// @param data A real pointer to the raw data to use as the value.
@@ -926,12 +1028,12 @@
 ///
 /// @return A reference to this Element.
 Element &
-Element::makeTypedObject(Network::byte_t *data, size_t size)
+Element::makeTypedObject(boost::uint8_t *data)
 {
 //    GNASH_REPORT_FUNCTION;
     _type = Element::TYPED_OBJECT_AMF0;
-    check_buffer(size);
-    _buffer->copy(data, size);
+//     check_buffer(size);
+//     _buffer->copy(data, size);
     return *this;
 }
 
@@ -954,11 +1056,17 @@
 ///
 /// @return A reference to this Element.
 Element &
-Element::makeReference(Network::byte_t *indata, size_t size)
+Element::makeReference(boost::uint8_t *indata, size_t size)
 {
 //    GNASH_REPORT_FUNCTION;
     _type = Element::REFERENCE_AMF0;
-    check_buffer(size);
+    try {
+       check_buffer(size);
+    } catch (std::exception& e) {
+       log_error("%s", e.what());
+       return *this;
+    }
+    
     _buffer->copy(indata, size);
     return *this;
 }
@@ -982,7 +1090,7 @@
 ///
 /// @return A reference to this Element.
 Element &
-Element::makeMovieClip(Network::byte_t *indata, size_t size)
+Element::makeMovieClip(boost::uint8_t *indata, size_t size)
 {
 //    GNASH_REPORT_FUNCTION;
     _type = Element::MOVIECLIP_AMF0;
@@ -1133,12 +1241,10 @@
 ///
 /// @return A reference to this Element.
 Element &
-Element::makeUnsupported(Network::byte_t *data, size_t size)
+Element::makeUnsupported(boost::uint8_t *data)
 {
 //    GNASH_REPORT_FUNCTION;    
     _type = Element::UNSUPPORTED_AMF0;
-    check_buffer(size);
-    _buffer->copy(data, size);
     return *this;
 }
 
@@ -1161,12 +1267,12 @@
 ///
 /// @return A reference to this Element.
 Element &
-Element::makeLongString(Network::byte_t *indata, size_t size)
+Element::makeLongString(boost::uint8_t *indata)
 {
 //    GNASH_REPORT_FUNCTION;    
     _type = Element::LONG_STRING_AMF0;
-    check_buffer(size);
-    _buffer->copy(indata, size);
+//     check_buffer(size);
+//     _buffer->copy(indata, size);
     return *this;
 }
 
@@ -1180,6 +1286,13 @@
     _type = Element::RECORD_SET_AMF0;
     return *this;
 }
+Element &
+Element::makeRecordSet(boost::uint8_t *data)
+{
+//    GNASH_REPORT_FUNCTION;
+    _type = Element::RECORD_SET_AMF0;
+    return *this;
+}
 
 /// \brief Make this Element a Property with a Date as the value.
 ///
@@ -1187,14 +1300,41 @@
 ///
 /// @return A reference to this Element.
 Element &
-Element::makeDate(Network::byte_t *date)
-{
-//    GNASH_REPORT_FUNCTION;
-    _type = Element::DATE_AMF0;
-    size_t size = sizeof(long);
-    check_buffer(size);
-    _buffer->copy(date, sizeof(long));
-    return makeNumber(date);
+Element::makeDate()
+{
+//    GNASH_REPORT_FUNCTION;
+    _type = Element::DATE_AMF0;
+
+    return *this;
+}
+
+Element &
+Element::makeDate(boost::uint8_t *date)
+{
+//    GNASH_REPORT_FUNCTION;
+
+    makeNumber(date);
+    _type = Element::DATE_AMF0;
+
+    return *this;
+}
+
+Element &
+Element::makeDate(double date)
+{
+//    GNASH_REPORT_FUNCTION;
+    boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(&date);
+    _type = Element::DATE_AMF0;
+    try {
+       check_buffer(AMF0_NUMBER_SIZE);
+    } catch (std::exception& e) {
+       log_error("%s", e.what());
+       return *this;
+    }
+    
+    *_buffer = date;
+
+    return *this;
 }
 
 /// \brief Get the number of bytes in the name of this Element.
@@ -1235,12 +1375,12 @@
 ///
 /// @return nothing.
 ///
-/// @remarks This add a NULL string terminator so the name can be printed.
+/// @remarks This adds a NULL string terminator so the name can be printed.
 void
 Element::setName(const char *name, size_t size)
 {
 //    GNASH_REPORT_FUNCTION;
-    Network::byte_t *ptr = reinterpret_cast<Network::byte_t *>(const_cast<char 
*>(name));
+    boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(const_cast<char 
*>(name));
     return setName(ptr, size);
 }
 
@@ -1253,9 +1393,9 @@
 ///
 /// @return nothing.
 ///
-/// @remarks This add a NULL string terminator so the name can be printed.
+/// @remarks This adds a NULL string terminator so the name can be printed.
 void
-Element::setName(Network::byte_t *name, size_t size)
+Element::setName(boost::uint8_t *name, size_t size)
 {
 //    GNASH_REPORT_FUNCTION;
     if ((size > 0) && (name != 0)) {
@@ -1270,9 +1410,8 @@
 }
 
 /// \brief Make sure the Buffer used for storing data is big enough.
-///            This will force a Buffer::resize() is the existing
-///            Buffer used to store the data isn't big enough to hold
-///            the new size.
+///            This will force an exception if the Buffer used to
+//             store the data isn't big enough to hold the new size.
 ///
 /// @param size The minimum size the buffer needs to be.
 ///
@@ -1284,8 +1423,8 @@
     if (_buffer == 0) {
        _buffer.reset(new Buffer(size));
     } else {
-       if (_buffer->size() != size) {
-           _buffer->resize(size);
+       if (_buffer->size() < size) {
+           throw ParserException("Buffer not big enough, try resizing!");
        }
     }
 }
@@ -1297,11 +1436,14 @@
 {
 //    GNASH_REPORT_FUNCTION;
     
-    if (_name) {
-       os << "Element name: " << _name << ", data length is " << getDataSize() 
<< endl;
-    }
-
     os << astype_str[_type] << ": ";
+    if (_name) {
+       os << " property name is: " << _name << ", ";
+    } else {
+       os << "(no name)";
+    }
+    os << endl << "data length is " << getDataSize() << endl;
+
 
     switch (_type) {
       case Element::NUMBER_AMF0:
@@ -1332,6 +1474,8 @@
       case Element::RECORD_SET_AMF0:
       case Element::XML_OBJECT_AMF0:
       case Element::TYPED_OBJECT_AMF0:
+         cerr << endl;
+         break;
       case Element::AMF3_DATA:
          if (getDataSize() != 0) {
              log_debug("FIXME: got AMF3 data!");
@@ -1350,9 +1494,11 @@
          break;
     }
 
-//     if (_buffer) {
-//     _buffer->dump();
-//     }
+    if (_type != Element::BOOLEAN_AMF0) {
+       if (_buffer) {
+           _buffer->dump();
+       }
+    }
 
     if (_properties.size() > 0) {
        vector<boost::shared_ptr<Element> >::const_iterator ait;

=== modified file 'libamf/element.h'
--- a/libamf/element.h  2008-11-18 22:56:10 +0000
+++ b/libamf/element.h  2008-12-23 02:56:29 +0000
@@ -26,7 +26,7 @@
 #include <boost/shared_ptr.hpp>
 #include <boost/scoped_ptr.hpp>
 
-#include "network.h"
+//#include "network.h"
 #include "dsodefs.h" // DSOEXPORT
 
 /// \namespace amf
@@ -221,8 +221,8 @@
     ///
     /// @return A reference to this Element.
     Element &makeString(const char *str, size_t size);
-    /// \overload Element::makeString(gnash::Network::byte_t *data, size_t 
size)
-    Element &makeString(gnash::Network::byte_t *data, size_t size);
+    /// \overload Element::makeString(boost::uint8_t *data, size_t size)
+    Element &makeString(boost::uint8_t *data, size_t size);
 
     /// \brief Make this Element with an ASCII string value.
     ///
@@ -261,7 +261,7 @@
     /// @param str The double to use as the value.
     ///
     /// @return A reference to this Element.
-    Element &makeNumber(gnash::Network::byte_t *data);
+    Element &makeNumber(boost::uint8_t *data);
     
     /// \brief Make this Element a Property with a double value
     ///
@@ -269,9 +269,9 @@
     ///
     /// @param num The double to use as the value of the property.
     Element &makeNumber(const std::string &name, double num) ;
-    /// \overload Element::makeNumber(const std::string &name, 
gnash::Network::byte_t *data);
+    /// \overload Element::makeNumber(const std::string &name, boost::uint8_t 
*data);
     ///                The size isn't needed as a double is always the same 
size.
-    Element &makeNumber(const std::string &name, gnash::Network::byte_t *data);
+    Element &makeNumber(const std::string &name, boost::uint8_t *data);
 
     /// \brief Make this Element with a boolean value.
     ///                The size isn't needed as a boolean is always the same 
size.
@@ -279,7 +279,7 @@
     /// @param data A real pointer to the boolean use as the value.
     ///
     /// @return A reference to this Element.
-    Element &makeBoolean(gnash::Network::byte_t *data);
+    Element &makeBoolean(boost::uint8_t *data);
 
     /// \brief Make this Element with a boolean value.
     ///
@@ -383,6 +383,7 @@
     ///
     /// @return A reference to this Element.
     Element &makeXMLObject(const std::string &name, const std::string &data);
+    Element &makeXMLObject(boost::uint8_t *data);
 
     /// \brief Make this Element a Property with an ECMA Array as the value.
     ///                This is a mixed array of any AMF types. These are stored
@@ -455,8 +456,9 @@
     /// @param name The name of the Property
     ///
     /// @return A reference to this Element.    
+    Element &makeTypedObject();
     Element &makeTypedObject(const std::string &name);
-    
+
     /// \brief Make this Element a Property with an Typed Object as the value.
     ///
     /// @param data A real pointer to the raw data to use as the value.
@@ -464,7 +466,7 @@
     /// @param size The number of bytes to use as the value.
     ///
     /// @return A reference to this Element.
-    Element &makeTypedObject(gnash::Network::byte_t *data, size_t size);
+    Element &makeTypedObject(boost::uint8_t *data);
     
     /// \brief Make this Element a Property with an Object Reference as the 
value.
     ///
@@ -478,7 +480,7 @@
     /// @param size The number of bytes to use as the value.
     ///
     /// @return A reference to this Element.
-    Element &makeReference(gnash::Network::byte_t *data, size_t size);
+    Element &makeReference(boost::uint8_t *data, size_t size);
     
     /// \brief Make this Element a Property with a Movie Clip (SWF data) as 
the value.
     ///
@@ -492,7 +494,7 @@
     /// @param size The number of bytes to use as the value.
     ///
     /// @return A reference to this Element.
-    Element &makeMovieClip(gnash::Network::byte_t *data, size_t size);
+    Element &makeMovieClip(boost::uint8_t *data, size_t size);
 
     /// \brief Make this Element a Property with a UTF8 String as the value.
     ///
@@ -506,7 +508,7 @@
     /// @param size The number of bytes to use as the value.
     ///
     /// @return A reference to this Element.
-    Element &makeLongString(gnash::Network::byte_t *data, size_t size);
+    Element &makeLongString(boost::uint8_t *data);
     
     /// \brief Make this Element a Property with a Record Set as the value.
     ///
@@ -520,7 +522,7 @@
     /// @param size The number of bytes to use as the value.
     ///
     /// @return A reference to this Element.
-    Element &makeRecordSet(gnash::Network::byte_t *data, size_t size);
+    Element &makeRecordSet(boost::uint8_t *data);
     
     /// \brief Make this Element a Property with a Date as the value.
     ///
@@ -532,7 +534,8 @@
     /// @param data A real pointer to the raw data to use as the value.
     ///
     /// @return A reference to this Element.
-    Element &makeDate(gnash::Network::byte_t *data);
+    Element &makeDate(boost::uint8_t *data);
+    Element &makeDate(double data);
     
     /// \brief Make this Element a Property with an Unsupported value.
     ///
@@ -546,7 +549,7 @@
     /// @param size The number of bytes to use as the value.
     ///
     /// @return A reference to this Element.
-    Element &makeUnsupported(gnash::Network::byte_t *data, size_t size);
+    Element &makeUnsupported(boost::uint8_t *data);
     
     /// \brief Test equivalance against another Element.
     ///                This compares all the data and the data type in the
@@ -626,8 +629,8 @@
     /// \brief Cast the data in this Element to an real pointer to data.
     ///
     /// @return A real pointer to the base address of the raw data in memory.
-    gnash::Network::byte_t *to_reference();
-    const gnash::Network::byte_t *to_reference() const;
+    boost::uint8_t *to_reference();
+    const boost::uint8_t *to_reference() const;
 
     // Manipulate the name of a property
 
@@ -663,7 +666,7 @@
     /// @return nothing.
     ///
     /// @remarks This add a NULL string terminator so the name can be printed.
-    void setName(gnash::Network::byte_t *name, size_t size);
+    void setName(boost::uint8_t *name, size_t size);
 
     // Manipulate the children Elements of an object
 
@@ -717,9 +720,12 @@
     ///
     /// @remarks This is only intended to be used for testing and
     ///                debugging purposes.
-    std::vector<boost::shared_ptr<Element> > getProperties()
+    std::vector<boost::shared_ptr<Element> > getProperties() const
                        { return _properties; };
-    
+
+    size_t calculateSize();
+    size_t calculateSize(amf::Element &el) const;
+
     ///  \brief Dump the internal data of this class in a human readable form.
     /// @remarks This should only be used for debugging purposes.
     void dump() const { dump(std::cerr); }

=== modified file 'libamf/flv.cpp'
--- a/libamf/flv.cpp    2008-10-27 14:46:27 +0000
+++ b/libamf/flv.cpp    2008-12-20 17:11:55 +0000
@@ -27,6 +27,13 @@
 #include <vector>
 #include <cmath>
 #include <climits>
+#if !defined(HAVE_WINSOCK_H) || defined(__OS2__)
+# include <sys/types.h>
+# include <arpa/inet.h>
+#else
+# include <windows.h>
+# include <io.h>
+#endif
 
 #include "buffer.h"
 #include "log.h"
@@ -67,20 +74,20 @@
 
 // Encode the data into a Buffer
 boost::shared_ptr<amf::Buffer>
-Flv::encodeHeader(Network::byte_t type)
+Flv::encodeHeader(boost::uint8_t type)
 {
 //    GNASH_REPORT_FUNCTION;
     boost::shared_ptr<amf::Buffer> buf(new Buffer(sizeof(Flv::flv_header_t)));
     buf->clear();
     
-    Network::byte_t version = 0x1;
+    boost::uint8_t version = 0x1;
     *buf = "FLV";
     *buf += version;
 
     *buf += type;
 
     boost::uint32_t size = htonl(0x9);
-    buf->append((Network::byte_t *)&size, sizeof(boost::uint32_t));
+    buf->append((boost::uint8_t *)&size, sizeof(boost::uint32_t));
 
     return buf;
 }
@@ -140,12 +147,12 @@
 }
 
 boost::shared_ptr<amf::Element> 
-Flv::decodeMetaData(gnash::Network::byte_t *buf, size_t size)
+Flv::decodeMetaData(boost::uint8_t *buf, size_t size)
 {
 //    GNASH_REPORT_FUNCTION;
     AMF amf;
-    Network::byte_t *ptr = buf;
-    Network::byte_t *tooFar = ptr + size;
+    boost::uint8_t *ptr = buf;
+    boost::uint8_t *tooFar = ptr + size;
     
     // Extract the onMetaData object name
     // In disk files, I always see the 0x2 type field for
@@ -174,7 +181,7 @@
 }
 
 boost::shared_ptr<Flv::flv_audio_t>
-Flv::decodeAudioData(gnash::Network::byte_t byte)
+Flv::decodeAudioData(boost::uint8_t byte)
 {
 //    GNASH_REPORT_FUNCTION;
     boost::shared_ptr<flv_audio_t> audio(new flv_audio_t);
@@ -233,7 +240,7 @@
 }
 
 boost::shared_ptr<Flv::flv_video_t>
-Flv::decodeVideoData(gnash::Network::byte_t byte)
+Flv::decodeVideoData(boost::uint8_t byte)
 {
 //    GNASH_REPORT_FUNCTION;
     boost::shared_ptr<flv_video_t> video(new flv_video_t);

=== modified file 'libamf/flv.h'
--- a/libamf/flv.h      2008-10-27 14:46:27 +0000
+++ b/libamf/flv.h      2008-12-20 17:11:55 +0000
@@ -165,7 +165,7 @@
     /// @param type The data type for the header
     ///
     /// @return a smart pointer to a Buffer containing the data in big endian 
format.
-    boost::shared_ptr<amf::Buffer> encodeHeader(gnash::Network::byte_t type);
+    boost::shared_ptr<amf::Buffer> encodeHeader(boost::uint8_t type);
     
     /// \brief Decode a Buffer into a header
     ///
@@ -190,21 +190,21 @@
     /// @param size The size of the data in bytes
     ///
     /// @return a smart pointer to an Element that contains the data.
-    boost::shared_ptr<amf::Element> decodeMetaData(gnash::Network::byte_t 
*data, size_t size);
+    boost::shared_ptr<amf::Element> decodeMetaData(boost::uint8_t *data, 
size_t size);
 
     /// \brief Decode an Audio object.
     ///
     /// @param flags The data to deserialize.
     /// 
     /// @return a smart pointer to an audio data structure that contains the 
data.
-    boost::shared_ptr<flv_audio_t> decodeAudioData(gnash::Network::byte_t 
flags);
+    boost::shared_ptr<flv_audio_t> decodeAudioData(boost::uint8_t flags);
 
     /// \brief Decode an Video object.
     ///
     /// @param flags The data to deserialize.
     /// 
     /// @return a smart pointer to an video data structure that contains the 
data.
-    boost::shared_ptr<flv_video_t> decodeVideoData(gnash::Network::byte_t 
flags);
+    boost::shared_ptr<flv_video_t> decodeVideoData(boost::uint8_t flags);
     
     /// \brief Decode an MetaData object.
     ///

=== modified file 'libamf/lcshm.cpp'
--- a/libamf/lcshm.cpp  2008-11-21 13:05:13 +0000
+++ b/libamf/lcshm.cpp  2008-12-20 17:11:55 +0000
@@ -29,7 +29,7 @@
 
 #include "log.h"
 #include "buffer.h"
-#include "network.h"
+//#include "network.h"
 #include "amf.h"
 #include "shm.h"
 #include "element.h"
@@ -101,7 +101,7 @@
 /// \brief Construct an initialized shared memory segment.
 ///
 /// @param addr The address to use for the memory segment.
-LcShm::LcShm(Network::byte_t *addr)
+LcShm::LcShm(boost::uint8_t *addr)
 {
 //    GNASH_REPORT_FUNCTION;
     _baseaddr = addr;
@@ -136,7 +136,7 @@
 ///
 /// @param baseaddr The address to use for the block of
 ///     Listeners.
-Listener::Listener(Network::byte_t *x)
+Listener::Listener(boost::uint8_t *x)
 {
 //    GNASH_REPORT_FUNCTION;
     _baseaddr = x;
@@ -159,7 +159,7 @@
 {
 //    GNASH_REPORT_FUNCTION;
 
-    Network::byte_t *addr = _baseaddr + LC_LISTENERS_START;
+    boost::uint8_t *addr = _baseaddr + LC_LISTENERS_START;
     char *item = reinterpret_cast<char *>(addr);
     // Walk through the list to the end
     while (*item != 0) {
@@ -182,7 +182,7 @@
 {
     GNASH_REPORT_FUNCTION;
 
-    Network::byte_t *addr = _baseaddr + LC_LISTENERS_START;
+    boost::uint8_t *addr = _baseaddr + LC_LISTENERS_START;
     char *item = reinterpret_cast<char *>(addr);
     // Walk to the end of the list
     while ((item[0] != 0) && (item[1] != 0)) {
@@ -231,7 +231,7 @@
 {
     GNASH_REPORT_FUNCTION;
 
-    Network::byte_t *addr = _baseaddr + LC_LISTENERS_START;
+    boost::uint8_t *addr = _baseaddr + LC_LISTENERS_START;
 
     int len = 0;
     char *item = reinterpret_cast<char *>(addr);
@@ -263,7 +263,7 @@
 //    GNASH_REPORT_FUNCTION;    
     auto_ptr< vector<string> > listeners ( new vector<string> );
     if (_baseaddr != 0) {
-        Network::byte_t *addr = _baseaddr + LC_LISTENERS_START;
+        boost::uint8_t *addr = _baseaddr + LC_LISTENERS_START;
         
         const char *item = reinterpret_cast<const char *>(addr);
         while (*item != 0) {
@@ -318,11 +318,11 @@
 /// @return A real pointer to the data after the headers has been parsed.
 ///
 /// @remarks May throw a ParserException
-Network::byte_t *
-LcShm::parseHeader(Network::byte_t *data, Network::byte_t* tooFar)
+boost::uint8_t *
+LcShm::parseHeader(boost::uint8_t *data, boost::uint8_t* tooFar)
 {
 //    GNASH_REPORT_FUNCTION;
-    Network::byte_t *ptr = data;
+    boost::uint8_t *ptr = data;
 
     if (data == 0) {
         log_debug("No data pointer to parse!");
@@ -391,17 +391,17 @@
 /// @param domain The domain the hostname is in.
 ///
 /// @return A real pointer to a header for a memory segment.
-Network::byte_t *
+boost::uint8_t *
 LcShm::formatHeader(const std::string &con, const std::string &host, bool /* 
domain */ )
 {
     GNASH_REPORT_FUNCTION;
-//    Network::byte_t *ptr = data + LC_HEADER_SIZE;
+//    boost::uint8_t *ptr = data + LC_HEADER_SIZE;
     int size = con.size() + host.size() + 9;
 
 //    Buffer *buf;
     
-    Network::byte_t *header = new Network::byte_t[size + 1];
-    Network::byte_t *ptr = header;
+    boost::uint8_t *header = new boost::uint8_t[size + 1];
+    boost::uint8_t *ptr = header;
 
     // This is the initial 16 bytes of the header
     memset(ptr, 0, size + 1);
@@ -523,13 +523,13 @@
 //    formatHeader(name, domainname, _object.domain);
 
     // Update the connection name
-    Network::byte_t *ptr = Listener::getBaseAddress();
-    if (ptr == reinterpret_cast<Network::byte_t *>(0)) {
+    boost::uint8_t *ptr = Listener::getBaseAddress();
+    if (ptr == reinterpret_cast<boost::uint8_t *>(0)) {
         log_error("base address not set!");
     }
 
 #if 0
-//    Network::byte_t *tmp = AMF::encodeElement(name.c_str());
+//    boost::uint8_t *tmp = AMF::encodeElement(name.c_str());
 //     memcpy(ptr, tmp, name.size());
 //     ptr +=  name.size() + AMF_HEADER_SIZE;
 //     delete[] tmp;
@@ -539,7 +539,7 @@
 //     ptr +=  domainname.size() + AMF_HEADER_SIZE;
 
 //    ptr += LC_HEADER_SIZE;
-//    Network::byte_t *x = ptr;    // just for debugging from gdb. temporary
+//    boost::uint8_t *x = ptr;    // just for debugging from gdb. temporary
 
     // This is the initial 16 bytes of the header
     memset(ptr, 0, LC_HEADER_SIZE + 200);
@@ -572,8 +572,8 @@
     
 //     ptr += AMF_BOOLEAN_SIZE;
     
-    vector<Network::byte_t> *vec = AMF::encodeElement(data);
-    vector<Network::byte_t>::iterator vit;
+    vector<boost::uint8_t> *vec = AMF::encodeElement(data);
+    vector<boost::uint8_t>::iterator vit;
     // Can't do a memcpy with a std::vector
 //    log_debug("Number of bytes in the vector: %x", vec->size());
     for (vit = vec->begin(); vit != vec->end(); vit++) {

=== modified file 'libamf/lcshm.h'
--- a/libamf/lcshm.h    2008-11-21 13:05:13 +0000
+++ b/libamf/lcshm.h    2008-12-20 17:11:55 +0000
@@ -18,10 +18,6 @@
 #ifndef __LCSHM_H__
 #define __LCSHM_H__
 
-#ifdef HAVE_CONFIG_H
-#include "gnashconfig.h"
-#endif
-
 #include <boost/cstdint.hpp>
 #include <boost/shared_ptr.hpp>
 #include <string>
@@ -52,7 +48,7 @@
     ///
     /// @param baseaddr The address to use for the block of
     ///                Listeners.
-    Listener(gnash::Network::byte_t *baseaddr);
+    Listener(boost::uint8_t *baseaddr);
 
     /// \brief Delete the Listener block
     ~Listener();
@@ -92,13 +88,13 @@
     /// @param addr The address for the block of Listeners.
     ///
     /// @return nothing.
-    void setBaseAddress(gnash::Network::byte_t *addr) { _baseaddr = addr; };
+    void setBaseAddress(boost::uint8_t *addr) { _baseaddr = addr; };
 
     /// \brief Set the base address for the block of Listeners.
     ///
     /// @return A real pointer to the base address of the block of
     ///                Listeners in the memory segment.
-    gnash::Network::byte_t *getBaseAddress() { return _baseaddr; };
+    boost::uint8_t *getBaseAddress() { return _baseaddr; };
     
 protected:
     /// \var LcShm::_name
@@ -107,7 +103,7 @@
 
     /// \var LcShm::_baseaddr
     ///                The base address of the block of Listeners.
-    gnash::Network::byte_t *_baseaddr;
+    boost::uint8_t *_baseaddr;
     
 //    std::vector<std::string> _listeners;
 };
@@ -152,7 +148,7 @@
     /// \brief Construct an initialized shared memory segment.
     ///
     /// @param baseaddr The address to use for the memory segment.
-    LcShm(gnash::Network::byte_t *baseaddr);
+    LcShm(boost::uint8_t *baseaddr);
     
     /// \brief Construct an initialized shared memory segment.
     ///
@@ -213,7 +209,7 @@
     ///
     /// @return A vector of smart pointers to the AMF0 Elements in
     ///                this memopry segment.
-    std::vector<boost::shared_ptr<amf::Element> > 
parseBody(gnash::Network::byte_t *data);
+    std::vector<boost::shared_ptr<amf::Element> > parseBody(boost::uint8_t 
*data);
 
     /// \brief Parse the header of the memory segment.
     ///
@@ -225,7 +221,7 @@
     /// @return A real pointer to the data after the headers has been parsed.
     ///
     /// @remarks May throw a ParserException 
-    gnash::Network::byte_t *parseHeader(gnash::Network::byte_t *data, 
gnash::Network::byte_t* tooFar);
+    boost::uint8_t *parseHeader(boost::uint8_t *data, boost::uint8_t* tooFar);
 
     /// \brief Format the header for the memory segment.
     ///
@@ -236,7 +232,7 @@
     /// @param domain The domain the hostname is in.
     ///
     /// @return A real pointer to a header for a memory segment.
-    gnash::Network::byte_t *formatHeader(const std::string &con, const 
std::string &host, bool domain);
+    boost::uint8_t *formatHeader(const std::string &con, const std::string 
&host, bool domain);
 
     /// \brief Set the name for this connection to the memory segment.
     ///
@@ -272,7 +268,7 @@
     /// @param addr The address to use for opening the memory segment.
     ///
     /// @return nothing.
-    void setBaseAddr(gnash::Network::byte_t *addr) { _baseaddr = addr; };
+    void setBaseAddr(boost::uint8_t *addr) { _baseaddr = addr; };
 
     ///  \brief Dump the internal data of this class in a human readable form.
     /// @remarks This should only be used for debugging purposes.
@@ -281,7 +277,7 @@
 private:
     /// \var LcShm::_baseaddr.
     ///                The base address of the memory segment.
-    gnash::Network::byte_t *_baseaddr;
+    boost::uint8_t *_baseaddr;
 
     /// \var LcShm::_header
     ///                A stored copy of the header for the memory segment.

=== modified file 'libamf/sol.cpp'
--- a/libamf/sol.cpp    2008-12-09 15:57:34 +0000
+++ b/libamf/sol.cpp    2008-12-20 17:11:55 +0000
@@ -30,7 +30,7 @@
 #include <fstream>
 #include <cassert>
 
-#include "network.h"
+//#include "network.h"
 #include "element.h"
 #include "amf.h"
 #include "buffer.h"
@@ -180,7 +180,7 @@
     // so we swap it first.
     boost::uint16_t swapped = SOL_MAGIC;
     swapped = htons(swapped);
-    Network::byte_t *ptr = reinterpret_cast<Network::byte_t *>(&swapped);
+    boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(&swapped);
     for (i=0; i<sizeof(boost::uint16_t); i++) {
         _header.push_back(ptr[i]);
     }
@@ -191,7 +191,7 @@
     filesize += name.size() + 16;
     boost::uint32_t len = filesize;
     len = htonl(len);
-    ptr = reinterpret_cast<Network::byte_t *>(&len);
+    ptr = reinterpret_cast<boost::uint8_t *>(&len);
     for (i=0; i<sizeof(boost::uint32_t); i++) {
         _header.push_back(ptr[i]);
     }
@@ -207,7 +207,7 @@
     // then the 0x0004 bytes, also a mystery
     swapped = SOL_BLOCK_MARK;
     swapped = htons(swapped);
-    ptr = reinterpret_cast<Network::byte_t *>(&swapped);
+    ptr = reinterpret_cast<boost::uint8_t *>(&swapped);
     for (i=0; i<sizeof(boost::uint16_t); i++) {
         _header.push_back(ptr[i]);
     }
@@ -221,12 +221,12 @@
     //  First the length in two bytes
     swapped = name.size();
     swapped = htons(swapped);
-    ptr = reinterpret_cast<Network::byte_t *>(&swapped);
+    ptr = reinterpret_cast<boost::uint8_t *>(&swapped);
     for (i=0; i<sizeof(boost::uint16_t); i++) {
         _header.push_back(ptr[i]);
     }
     // then the string itself
-    ptr = (Network::byte_t *)name.c_str();
+    ptr = (boost::uint8_t *)name.c_str();
     for (i=0; i<name.size(); i++) {
         _header.push_back(ptr[i]);
     }
@@ -265,7 +265,7 @@
         return false;
     }
     
-    vector<Network::byte_t>::iterator it;
+    vector<boost::uint8_t>::iterator it;
     vector<boost::shared_ptr<amf::Element> >::iterator ita; 
     AMF amf_obj;
     char *ptr;
@@ -289,7 +289,7 @@
     for (ita = _amfobjs.begin(); ita != _amfobjs.end(); ita++) {
         boost::shared_ptr<Element> el = (*(ita));
         boost::shared_ptr<amf::Buffer> var = amf_obj.encodeProperty(el); 
-        //  Network::byte_t *var = amf_obj.encodeProperty(el, outsize); 
+        //  boost::uint8_t *var = amf_obj.encodeProperty(el, outsize); 
         if (!var) {
             continue;
         }
@@ -382,16 +382,16 @@
 
        try {
 
-        Network::byte_t *ptr = 0;
+        boost::uint8_t *ptr = 0;
 
            ifstream ifs(filespec.c_str(), ios::binary);
 
         _filesize = st.st_size;
-        boost::scoped_array<Network::byte_t> buf(
-                new Network::byte_t[_filesize + sizeof(int)]);
+        boost::scoped_array<boost::uint8_t> buf(
+                new boost::uint8_t[_filesize + sizeof(int)]);
 
            ptr = buf.get();
-           Network::byte_t* tooFar = buf.get() + _filesize;
+           boost::uint8_t* tooFar = buf.get() + _filesize;
            
            bodysize = st.st_size - 6;
            _filespec = filespec;

=== modified file 'libamf/sol.h'
--- a/libamf/sol.h      2008-12-09 15:57:34 +0000
+++ b/libamf/sol.h      2008-12-20 17:11:55 +0000
@@ -18,17 +18,11 @@
 #ifndef GNASH_SOL_H
 #define GNASH_SOL_H
 
-#ifdef HAVE_CONFIG_H
-#include "gnashconfig.h"
-#endif
-
 #include <boost/cstdint.hpp>
 #include <string>
 #include <vector>
 
 #include "dsodefs.h" //DSOEXPORT
-#include "network.h"
-//#include "element.h"
 #include "amf.h"
 
 // It comprises of a magic number, followed by the file length, a
@@ -74,7 +68,7 @@
     ///                .sol file data.
     ///
     /// @return true if this succeeded. false if it doesn't.
-    bool extractHeader(const std::vector<gnash::Network::byte_t> &data);
+    bool extractHeader(const std::vector<boost::uint8_t> &data);
 
     /// \brief Extract the header from the file.
     ///
@@ -89,7 +83,7 @@
     ///                .sol file data.
     ///
     /// @return true if this succeeded. false if it doesn't.
-    bool formatHeader(const std::vector<gnash::Network::byte_t> &data);
+    bool formatHeader(const std::vector<boost::uint8_t> &data);
 
     /// \brief Create the file header.
     ///
@@ -131,7 +125,7 @@
     /// \brief Get the stored copy of the header
     ///
     /// @return A vector of raw bytes that is a binary form of the header.
-    std::vector<gnash::Network::byte_t> getHeader() { return _header; };
+    std::vector<boost::uint8_t> getHeader() { return _header; };
 
     /// \brief Add the AMF objects that are the data of the file
     //
@@ -193,11 +187,11 @@
  private:
     /// \var SOL::_header
     ///                A stored copy of the SOL file header.
-    std::vector<gnash::Network::byte_t> _header;
+    std::vector<boost::uint8_t> _header;
 
     /// \var SOL::_data
     ///                The vector that contains the raw dats for this .sol 
file.
-    std::vector<gnash::Network::byte_t> _data;
+    std::vector<boost::uint8_t> _data;
 
     /// \var SOL::_objname
     ///                The name of the SharedObject in the .sol file.

=== modified file 'libcore/asobj/SharedObject_as.cpp'
--- a/libcore/asobj/SharedObject_as.cpp 2008-12-19 08:23:56 +0000
+++ b/libcore/asobj/SharedObject_as.cpp 2008-12-25 23:00:23 +0000
@@ -26,6 +26,13 @@
 #include <boost/tokenizer.hpp>
 #include <boost/scoped_array.hpp>
 #include <boost/shared_ptr.hpp>
+#if !defined(HAVE_WINSOCK_H) || defined(__OS2__)
+# include <sys/types.h>
+# include <arpa/inet.h>
+#else
+# include <windows.h>
+# include <io.h>
+#endif
 
 #include "SimpleBuffer.h"
 #include "as_value.h"

=== modified file 'libmedia/FLVParser.cpp'
--- a/libmedia/FLVParser.cpp    2008-11-18 11:59:41 +0000
+++ b/libmedia/FLVParser.cpp    2008-12-20 17:11:55 +0000
@@ -35,6 +35,13 @@
 
 #include <string>
 #include <iosfwd>
+#if !defined(HAVE_WINSOCK_H) || defined(__OS2__)
+# include <sys/types.h>
+# include <arpa/inet.h>
+#else
+# include <windows.h>
+# include <io.h>
+#endif
 
 using namespace std;
 

=== modified file 'libnet/cque.cpp'
--- a/libnet/cque.cpp   2008-11-19 10:09:12 +0000
+++ b/libnet/cque.cpp   2008-12-20 17:11:55 +0000
@@ -105,7 +105,7 @@
 
 // Push data
 bool
-CQue::push(gnash::Network::byte_t *data, int nbytes)
+CQue::push(boost::uint8_t *data, int nbytes)
 {
 //    GNASH_REPORT_FUNCTION;
     boost::shared_ptr<amf::Buffer> buf(new amf::Buffer);
@@ -211,7 +211,7 @@
     for (que_t::iterator e=_que.end(); to!=e; ++to) {
         size_t sz = (*to)->size();
         totalsize += sz;
-        if (sz < gnash::NETBUFSIZE) break;
+        if (sz < amf::NETBUFSIZE) break;
     }
     if (to == _que.end()) {
         // Didn't find an element ending the merge
@@ -220,7 +220,7 @@
 
     // Merge all elements in a single buffer. We have totalsize now.
     boost::shared_ptr<amf::Buffer> newbuf(new Buffer(totalsize));
-    Network::byte_t *tmp = newbuf->reference();
+    boost::uint8_t *tmp = newbuf->reference();
     ++to;
     for (que_t::iterator i=from; i!=to; ++i) {
         boost::shared_ptr<amf::Buffer> buf = *i;

=== modified file 'libnet/cque.h'
--- a/libnet/cque.h     2008-11-01 14:59:07 +0000
+++ b/libnet/cque.h     2008-12-20 17:11:55 +0000
@@ -48,7 +48,7 @@
     CQue(const std::string &str) { _name = str; };
     ~CQue();
     // Push data onto the que
-    bool push(gnash::Network::byte_t *data, int nbytes);
+    bool push(boost::uint8_t *data, int nbytes);
     bool push(boost::shared_ptr<amf::Buffer> data);
     // Pop the first date element off the que
     boost::shared_ptr<amf::Buffer> pop();

=== modified file 'libnet/handler.cpp'
--- a/libnet/handler.cpp        2008-12-15 03:44:46 +0000
+++ b/libnet/handler.cpp        2008-12-20 17:11:55 +0000
@@ -85,7 +85,7 @@
 
 // Push bytes on the outgoing FIFO
 bool
-Handler::push(gnash::Network::byte_t *data, int nbytes, fifo_e direction)
+Handler::push(boost::uint8_t *data, int nbytes, fifo_e direction)
 {
 //    GNASH_REPORT_FUNCTION;
     boost::shared_ptr<amf::Buffer> ptr(new amf::Buffer);

=== modified file 'libnet/handler.h'
--- a/libnet/handler.h  2008-12-15 03:44:46 +0000
+++ b/libnet/handler.h  2008-12-20 17:11:55 +0000
@@ -73,16 +73,16 @@
     bool push(boost::shared_ptr<amf::Buffer> data)
        { return _incoming.push(data); };
     bool push(boost::shared_ptr<amf::Buffer> data, fifo_e direction);
-    bool push(gnash::Network::byte_t *data, int nbytes, fifo_e direction);
-    bool push(gnash::Network::byte_t *data, int nbytes)
+    bool push(boost::uint8_t *data, int nbytes, fifo_e direction);
+    bool push(boost::uint8_t *data, int nbytes)
        { return _incoming.push(data, nbytes); };
-    bool pushin(gnash::Network::byte_t *data, int nbytes)
+    bool pushin(boost::uint8_t *data, int nbytes)
        { return _incoming.push(data, nbytes); };
     bool pushin(boost::shared_ptr<amf::Buffer> data)
        { return _incoming.push(data); };
 #if 0
     // Push bytes on the incoming FIFO, which must be specified
-    bool pushout(gnash::Network::byte_t *data, int nbytes)
+    bool pushout(boost::uint8_t *data, int nbytes)
        { return _outgoing.push(data, nbytes); };
     bool pushout(boost::shared_ptr<amf::Buffer> data)
        { return _outgoing.push(data); };

=== modified file 'libnet/http.cpp'
--- a/libnet/http.cpp   2008-12-18 00:46:57 +0000
+++ b/libnet/http.cpp   2008-12-25 22:27:51 +0000
@@ -188,7 +188,7 @@
 {
     GNASH_REPORT_FUNCTION;
 
-//     Network::byte_t buffer[readsize+1];
+//     boost::uint8_t buffer[readsize+1];
 //     const char *ptr = reinterpret_cast<const char *>(buffer);
 //     memset(buffer, 0, readsize+1);
     
@@ -306,39 +306,61 @@
        log_debug("Que empty, net connection dropped for fd #%d", getFileFd());
        return false;
     }
+//    cerr << __FUNCTION__ << buf->allocated() << " : " << 
hexify(buf->reference(), buf->allocated(), true) << endl;
+    
     clearHeader();
-    gnash::Network::byte_t *data = processHeaderFields(*buf);
+    boost::uint8_t *data = processHeaderFields(*buf);
     size_t length = strtol(getField("content-length").c_str(), NULL, 0);
-    amf::Buffer content (length);
-    cerr << __PRETTY_FUNCTION__ << " : " << content.size() << endl;
-    int ret = readNet(fd, content, 5);
-//     cerr << __PRETTY_FUNCTION__ << " : " << ret << " : " << (char 
*)content->reference() << endl;
+    boost::shared_ptr<amf::Buffer> content(new amf::Buffer(length));
+    int ret = 0;
+    if (buf->allocated() - (data - buf->reference()) ) {
+//     cerr << "Don't need to read more data: have " << buf->allocated() << " 
bytes" << endl;
+       content->copy(data, length);
+       ret = length;
+    } else {   
+//     cerr << "Need to read more data, only have "  << buf->allocated() << " 
bytes" << endl;
+       ret = readNet(fd, *content, 2);
+       data = content->reference();
+    }    
     
     if (getField("content-type") == "application/x-www-form-urlencoded") {
        log_debug("Got file data in POST");
        string url = _docroot + _filespec;
-       DiskStream ds(url, content);
+       DiskStream ds(url, *content);
        ds.writeToDisk();
 //    ds.close();
        // oh boy, we got ourselves some encoded AMF objects instead of a 
boring file.
     } else if (getField("content-type") == "application/x-amf") {
        log_debug("Got AMF data in POST");
+#if 0
        amf::AMF amf;
        boost::shared_ptr<amf::Element> el = 
amf.extractAMF(content.reference(), content.end());
-       el->dump();             // FIXME: do something intelligent with this 
Element
+       el->dump();             // FIXME: do something intelligent
+                               // with this Element
+#endif
     }
     
     // Send the reply
 
-
     // NOTE: this is a "special" path we trap until we have real CGI support
     if ((_filespec == "/echo/gateway")
        && (getField("content-type") == "application/x-amf")) {
 //     const char *num = (const char *)buf->at(10);
        log_debug("Got CGI echo request in POST");
-//     cerr << hexify(content.reference(), content.allocated(), true) << endl;
-       amf::Buffer &reply = formatEcho("1", content); // FIXME:
-       writeNet(fd, reply);
+//     cerr << "FIXME 2: " << hexify(content->reference(), 
content->allocated(), true) << endl;
+
+       vector<boost::shared_ptr<amf::Element> > headers = 
parseEchoRequest(*content);
+       boost::shared_ptr<amf::Element> &el0 = headers[0];
+       boost::shared_ptr<amf::Element> &el1 = headers[1];
+       boost::shared_ptr<amf::Element> &el3 = headers[3];
+       if (headers.size() >= 4) {
+           if (headers[3]) {
+               amf::Buffer &reply = formatEchoResponse(headers[1]->getName(), 
*headers[3]);
+//         cerr << "FIXME 3: " << hexify(reply.reference(), reply.allocated(), 
true) << endl;
+//         cerr << "FIXME 3: " << hexify(reply.reference(), reply.allocated(), 
false) << endl;
+               writeNet(fd, reply);
+           }
+       }
     } else {
        amf::Buffer &reply = formatHeader(_filetype, _filesize, HTTP::OK);
        writeNet(fd, reply);
@@ -479,7 +501,7 @@
     return false;
 }
 
-gnash::Network::byte_t *
+boost::uint8_t *
 HTTP::processHeaderFields(amf::Buffer &buf)
 {
   //    GNASH_REPORT_FUNCTION;
@@ -531,8 +553,8 @@
            
 //         cerr << "FIXME: " << (void *)i << " : " << dec <<  end << endl;
        } else {
-           const gnash::Network::byte_t *cmd = reinterpret_cast<const 
gnash::Network::byte_t *>(i->c_str());
-           if (extractCommand(const_cast<gnash::Network::byte_t *>(cmd)) == 
HTTP::HTTP_NONE) {
+           const boost::uint8_t *cmd = reinterpret_cast<const boost::uint8_t 
*>(i->c_str());
+           if (extractCommand(const_cast<boost::uint8_t *>(cmd)) == 
HTTP::HTTP_NONE) {
                break;
            } else {
              log_debug("Got a request, parsing \"%s\"", *i);
@@ -1012,7 +1034,7 @@
     formatHeader(size, code);
     
 //    int ret = Network::writeNet(_header.str());    
-//    Network::byte_t *ptr = (Network::byte_t *)_body.str().c_str();
+//    boost::uint8_t *ptr = (boost::uint8_t *)_body.str().c_str();
 //     buf->copy(ptr, _body.str().size());
 //    _handler->dump();
 
@@ -1061,90 +1083,122 @@
     return _buffer;
 }
 
+// Parse an Echo Request message coming from the Red5 echo_test. This
+// method should only be used for testing purposes.
+vector<boost::shared_ptr<amf::Element > >
+HTTP::parseEchoRequest(boost::uint8_t *data, size_t size)
+{
+//    GNASH_REPORT_FUNCTION;
+    
+    vector<boost::shared_ptr<amf::Element > > headers;
+       
+    // skip past the header bytes, we don't care about them.
+    boost::uint8_t *tmpptr = data + 6;
+    
+    boost::uint16_t length;
+    length = ntohs((*(boost::uint16_t *)tmpptr) & 0xffff);
+    tmpptr += sizeof(boost::uint16_t);
+
+    // Get the first name, which is a raw string, and not preceded by
+    // a type byte.
+    boost::shared_ptr<amf::Element > el1(new amf::Element);
+    el1->setName(tmpptr, length);
+    tmpptr += length;
+    headers.push_back(el1);
+    
+    // Get the second name, which is a raw string, and not preceded by
+    // a type byte.
+    length = ntohs((*(boost::uint16_t *)tmpptr) & 0xffff);
+    tmpptr += sizeof(boost::uint16_t);
+    boost::shared_ptr<amf::Element > el2(new amf::Element);
+    el2->setName(tmpptr, length);
+    headers.push_back(el2);
+    tmpptr += length;
+
+    // Get the last two pieces of data, which are both AMF encoded
+    // with a type byte.
+    amf::AMF amf;
+    boost::shared_ptr<amf::Element> el3 = amf.extractAMF(tmpptr, tmpptr + 
size);
+    headers.push_back(el3);
+    tmpptr += amf.totalsize();
+    
+    boost::shared_ptr<amf::Element> el4 = amf.extractAMF(tmpptr, tmpptr + 
size);
+    headers.push_back(el4);
+
+     return headers;
+}
+
 // format a response to the 'echo' test used for testing Gnash. This
-// is only used for testing by developers.
-amf::Buffer &
-HTTP::formatEcho(const std::string &num, amf::Buffer &data)
-{
-//    GNASH_REPORT_FUNCTION;
-    Network::byte_t *tmpptr = data.reference();
-    amf::Buffer fixme("00 00 00 00 00 01 00 0b");
-    amf::Buffer fixme1("00 04");
+// is only used for testing by developers. The format appears to be
+// two strings, followed by a double, followed by the "onResult".
+amf::Buffer &
+HTTP::formatEchoResponse(const std::string &num, amf::Element &el)
+{
+//    GNASH_REPORT_FUNCTION;
+    boost::shared_ptr<amf::Buffer> data = el.encode(); // 
amf::AMF::encodeElement(el);
+    return formatEchoResponse(num, data->reference(), data->allocated());
+}
+
+amf::Buffer &
+HTTP::formatEchoResponse(const std::string &num, amf::Buffer &data)
+{
+//    GNASH_REPORT_FUNCTION;
+    return formatEchoResponse(num, data.reference(), data.allocated());
+}
+
+amf::Buffer &
+HTTP::formatEchoResponse(const std::string &num, boost::uint8_t *data, size_t 
size)
+{
+//    GNASH_REPORT_FUNCTION;
+
+    boost::uint8_t *tmpptr  = data;
+    
+    // FIXME: temporary hacks while debugging
+    amf::Buffer fixme("00 00 00 00 00 01");
     amf::Buffer fixme2("ff ff ff ff");
-    amf::Buffer fixme3("01 00");
-    string null = "null";
-
-    tmpptr += 6;
-//    cerr << hexify(tmpptr, 6, true) << endl;
     
-    boost::uint16_t length;
-    length = ntohs((*(boost::uint16_t *)tmpptr) & 0xffff);
-    cerr << "LENGTH 1 = " << length <<  endl;
-    if (length >= amf::SANE_STR_SIZE) {
-       log_error("%d bytes for a string is over the safe limit of %d",
-                 length, amf::SANE_STR_SIZE);
-    }
-    // Get the method, example "echo"
-    tmpptr += sizeof(boost::uint16_t);
-//     cerr << hexify(tmpptr, length, false) << endl;
-//     cerr << hexify(tmpptr, length, true) << endl;
-    std::string str1(reinterpret_cast<const char *>(tmpptr), length);
-//     char *str1 = new char[length+1];
-//     memset(str1, 0, length+1);
-//     memcpy(str1, reinterpret_cast<char *>(tmpptr), length);
-//     cerr << "NAME 1 = " << str1 <<  endl;
-    tmpptr += length;
-//    Element el1("null", fixme2);
-// Get the instance number, example "/1"
-    length = ntohs((*(boost::uint16_t *)tmpptr) & 0xffff);
-    tmpptr += sizeof(boost::uint16_t);
-     cerr << hexify(tmpptr, length, false) << endl;
-     cerr << hexify(tmpptr, length, true) << endl;
-    cerr << "LENGTH 2 = " << length << endl;
-    std::string str2(reinterpret_cast<const char *>(tmpptr), length);
-//    char *str2 = new char[length+1];
-//    memset(str2, 0, length+1);
-//     memcpy(str2, reinterpret_cast<char *>(tmpptr), length);
-     cerr << "NAME 2 = " << str2 <<  endl;
-    tmpptr += length;
-    string res = str2;
-    res += "/onResult";
-
-    // Get the mystery number
-    double mysnum = *reinterpret_cast<const double*>(tmpptr);
-    tmpptr += sizeof(double) + 1;
-
-    // Get the actual data
-    size_t insize = data.spaceLeft() - 1;
-    size_t size = res.size() + insize + fixme.size() + null.size() + 
fixme2.size();
-    size = 31;
-
     _buffer = "HTTP/1.1 200 OK\r\n";
     formatContentType(DiskStream::FILETYPE_AMF);
-    formatContentLength(size);
+//    formatContentLength(size);
+    // FIXME: this is a hack ! Calculate a real size!
+    formatContentLength(size+29);
+    
     // Pretend to be Red5 server
     formatServer("Jetty(6.1.7)");
     
     // All HTTP messages are followed by a blank line.
     terminateHeader();
 
-    // Add the binary blob
+    // Add the binary blob for the header
     _buffer += fixme;
 
-    // Add the response
-    _buffer += res;
-
-    // Add the NULL name for this property
-    _buffer += fixme1;
-    _buffer += null;
-    
+    // Make the result response, which is the 2nd data item passed in
+    // the request, a slash followed by a number like "/2".
+    string result = num;
+    result += "/onResult";
+    boost::shared_ptr<amf::Buffer> res = amf::AMF::encodeString(result);
+    _buffer.append(res->begin()+1, res->size()-1);
+
+    // Add the null data item
+    boost::shared_ptr<amf::Buffer> null = amf::AMF::encodeString("null");
+    _buffer.append(null->begin()+1, null->size()-1);
+
     // Add the other binary blob
     _buffer += fixme2;
 
-    cerr << "FIXME: " << hexify(tmpptr, 6, false) << endl;
-    // Add the AMF data we're echoing back
-    _buffer.append(tmpptr, insize);
-//    _buffer += fixme3;
+    amf::Element::amf0_type_e type = 
static_cast<amf::Element::amf0_type_e>(*data);
+    if ((type == amf::Element::UNSUPPORTED_AMF0)
+       || (type == amf::Element::NULL_AMF0)) {
+       _buffer += type;
+       // Red5 returns a NULL object when it's recieved an undefined one in 
the echo_test
+    } else if (type == amf::Element::UNDEFINED_AMF0) {
+       _buffer += amf::Element::NULL_AMF0;
+    } else {
+       // Add the AMF data we're echoing back
+       if (size) {
+           _buffer.append(data, size);
+       }
+    }
     
     return _buffer;
 }
@@ -1187,7 +1241,7 @@
 /// <index>
 ///    is a consecutive number that seems to be used to detect missing packages
 HTTP::rtmpt_cmd_e
-HTTP::extractRTMPT(gnash::Network::byte_t *data)
+HTTP::extractRTMPT(boost::uint8_t *data)
 {
     GNASH_REPORT_FUNCTION;
 
@@ -1241,7 +1295,7 @@
 }
 
 HTTP::http_method_e
-HTTP::extractCommand(gnash::Network::byte_t *data)
+HTTP::extractCommand(boost::uint8_t *data)
 {
 //    GNASH_REPORT_FUNCTION;
 
@@ -1274,8 +1328,8 @@
     // For valid requests, the second argument, delimited by spaces is the 
filespec
     // of the file being requested or transmitted.
     if (cmd != HTTP::HTTP_NONE) {
-       Network::byte_t *start = std::find(data, data+7, ' ') + 1;
-       Network::byte_t *end   = std::find(start + 2, data+PATH_MAX, ' ');
+       boost::uint8_t *start = std::find(data, data+7, ' ') + 1;
+       boost::uint8_t *end   = std::find(start + 2, data+PATH_MAX, ' ');
        // FIXME: there has got to be a way to copy into a string that actually 
works.
        char path[(end-start) + 1];
        memset(path, 0, (end-start) + 1);
@@ -1326,7 +1380,7 @@
 ///
 /// @return The number of bytes sent
 int DSOEXPORT
-HTTP::sendMsg(const Network::byte_t *data, size_t size)
+HTTP::sendMsg(const boost::uint8_t *data, size_t size)
 {
     GNASH_REPORT_FUNCTION;
 //    _header
@@ -1363,7 +1417,7 @@
        if (ret > 0) {
            buf->setSeekPointer(buf->reference() + ret);
 //         cerr << "XXXXX: " << (char *)buf->reference() << endl;
-           if (ret < static_cast<int>(NETBUFSIZE)) {
+           if (ret < static_cast<int>(amf::NETBUFSIZE)) {
 //             buf->resize(ret);       FIXME: why does this corrupt
 //             the buffer ?
                _que.push(buf);

=== modified file 'libnet/http.h'
--- a/libnet/http.h     2008-12-17 17:29:24 +0000
+++ b/libnet/http.h     2008-12-20 17:11:55 +0000
@@ -140,14 +140,18 @@
     bool checkEntityFields(amf::Buffer &buf);
     bool checkGeneralFields(amf::Buffer &buf);
 
+    // Parse an Echo Request message coming from the Red5 echo_test.
+    std::vector<boost::shared_ptr<amf::Element > > 
parseEchoRequest(amf::Buffer &buf) { return parseEchoRequest(buf.reference(), 
buf.size()); };
+    std::vector<boost::shared_ptr<amf::Element > > 
parseEchoRequest(boost::uint8_t *buf, size_t size);
+    
     // process all the header fields in the Buffer, storing them internally
     // in _fields. The address returned is the address where the Content data
     // starts, and is "Content-Length" bytes long, of "Content-Type" data.
-    gnash::Network::byte_t *processHeaderFields(amf::Buffer &buf);
+    boost::uint8_t *processHeaderFields(amf::Buffer &buf);
     
     // Get the field for header 'name' that was stored by processHeaderFields()
     std::string &getField(const std::string &name) { return _fields[name]; };
-    size_t NumOfFields() { _fields.size(); };
+    size_t NumOfFields() { return _fields.size(); };
     void clearFields() { _fields.clear(); };
 
     // Get an array of values for header field 'name'.
@@ -166,13 +170,13 @@
     // These methods extract data from an RTMPT message. RTMP is an
     // extension to HTTP that adds commands to manipulate the
     // connection's persistance.
-    rtmpt_cmd_e extractRTMPT(gnash::Network::byte_t *data);
+    rtmpt_cmd_e extractRTMPT(boost::uint8_t *data);
     rtmpt_cmd_e extractRTMPT(amf::Buffer &data)
        { return extractRTMPT(data.reference()); };
 
     // Examine the beginning of the data for an HTTP request command
     // like GET or POST, etc...
-    http_method_e extractCommand(gnash::Network::byte_t *data);
+    http_method_e extractCommand(boost::uint8_t *data);
     http_method_e extractCommand(amf::Buffer &data)
        { return extractCommand(data.reference()); };    
     
@@ -194,14 +198,15 @@
     ///                the common form.
     amf::Buffer &formatCommon(const std::string &data);
 
-
     amf::Buffer &formatHeader(DiskStream::filetype_e type, size_t filesize,
                            http_status_e code);
     amf::Buffer &formatHeader(size_t filesize, http_status_e type);
     amf::Buffer &formatHeader(http_status_e type);
     amf::Buffer &formatRequest(const std::string &url, http_method_e req);
     // format a response to the 'echo' test used for testing Gnash.
-    amf::Buffer &formatEcho(const std::string &num, amf::Buffer &data);
+    amf::Buffer &formatEchoResponse(const std::string &num, amf::Element &el);
+    amf::Buffer &formatEchoResponse(const std::string &num, amf::Buffer &data);
+    amf::Buffer &formatEchoResponse(const std::string &num, boost::uint8_t 
*data, size_t size);
 
     amf::Buffer &formatMethod(const std::string &data)
        {return formatCommon("Method: " + data); };
@@ -243,7 +248,7 @@
     amf::Buffer &formatErrorResponse(http_status_e err);
     
     // Return the header that's been built up.
-    Network::byte_t *getHeader() { return _buffer.reference(); };
+    boost::uint8_t *getHeader() { return _buffer.reference(); };
 
     // Return the header that's been built up.
     amf::Buffer &getBuffer() { return _buffer; };
@@ -276,11 +281,11 @@
     /// @return The number of bytes sent
     int DSOEXPORT sendMsg();
     int DSOEXPORT sendMsg(int fd);
-    int DSOEXPORT sendMsg(const Network::byte_t *data, size_t size);
+    int DSOEXPORT sendMsg(const boost::uint8_t *data, size_t size);
     int DSOEXPORT sendMsg(boost::shared_ptr<amf::Buffer> &buf)
        { return sendMsg(buf->reference(), buf->size()); };
     int DSOEXPORT sendMsg(std::stringstream &sstr)
-       { return sendMsg(reinterpret_cast<const Network::byte_t 
*>(sstr.str().c_str()), sstr.str().size()); };
+       { return sendMsg(reinterpret_cast<const boost::uint8_t 
*>(sstr.str().c_str()), sstr.str().size()); };
     
     // These accessors are used mostly just for debugging.
     bool keepAlive() { return _keepalive; }

=== modified file 'libnet/network.h'
--- a/libnet/network.h  2008-12-18 00:07:18 +0000
+++ b/libnet/network.h  2008-12-20 17:11:55 +0000
@@ -78,9 +78,6 @@
   typedef int    socklen_t;
 #endif
 
-// Adjust for the constant size
-const size_t NETBUFSIZE = 1448;        // 1500 appears to be the default size 
as used by FMS
-//const size_t NETBUFSIZE = 1357*2;    // 1500 appears to be the default size 
as used by FMS
 
 /// \class Network
 ///    This is a low level network class for Gnash and Cygnal. This

=== modified file 'libnet/rtmp.cpp'
--- a/libnet/rtmp.cpp   2008-11-21 21:09:15 +0000
+++ b/libnet/rtmp.cpp   2008-12-20 17:11:55 +0000
@@ -146,7 +146,7 @@
 };
 
 int
-RTMP::headerSize(Network::byte_t header)
+RTMP::headerSize(boost::uint8_t header)
 {
 //    GNASH_REPORT_FUNCTION;
     
@@ -249,11 +249,11 @@
 }
 
 RTMP::rtmp_head_t *
-RTMP::decodeHeader(Network::byte_t *in)
+RTMP::decodeHeader(boost::uint8_t *in)
 {
     GNASH_REPORT_FUNCTION;
     
-    Network::byte_t *tmpptr = in;
+    boost::uint8_t *tmpptr = in;
     
     _header.channel = *tmpptr & RTMP_INDEX_MASK;
     log_debug (_("The AMF channel index is %d"), _header.channel);
@@ -278,7 +278,7 @@
     }
 
     if (_header.head_size >= 8) {
-       Network::byte_t byte = *tmpptr;
+       boost::uint8_t byte = *tmpptr;
         _header.type = (content_types_e)byte;
         tmpptr++;
        if (_header.type <= RTMP::INVOKE ) {
@@ -340,7 +340,7 @@
 {
 //    GNASH_REPORT_FUNCTION;
     boost::shared_ptr<amf::Buffer> buf(new Buffer(1));
-    Network::byte_t *ptr = buf->reference();
+    boost::uint8_t *ptr = buf->reference();
     
     // Make the channel index & header size byte
     *ptr = head_size & RTMP_HEADSIZE_MASK;  
@@ -375,7 +375,7 @@
     
 // FIXME: this is only to make this more readeable with GDB, and is a 
performance hit.
     buf->clear();
-    Network::byte_t *ptr = buf->reference();
+    boost::uint8_t *ptr = buf->reference();
     
     // Make the channel index & header size byte
 //    *ptr = head_size & RTMP_HEADSIZE_MASK;
@@ -419,8 +419,8 @@
 
 //    int packetsize = 0;
     size_t amf_index, headersize;
-    Network::byte_t *ptr = buf->reference();
-    Network::byte_t *tooFar = ptr+buf->size();
+    boost::uint8_t *ptr = buf->reference();
+    boost::uint8_t *tooFar = ptr+buf->size();
     AMF amf;
     
     amf_index = *buf->reference() & RTMP_INDEX_MASK;
@@ -439,9 +439,9 @@
 //     }
 
 #if 1
-    Network::byte_t *end = buf->remove(0xc3);
+    boost::uint8_t *end = buf->remove(0xc3);
 #else
-    Network::byte_t *end = buf->find(0xc3);
+    boost::uint8_t *end = buf->find(0xc3);
     log_debug("END is %x", (void *)end);
     *end = '*';
 #endif
@@ -528,11 +528,11 @@
 // This seems to be a ping message, 12 byte header, system channel 2
 // 02 00 00 00 00 00 06 04 00 00 00 00 00 00 00 00 00 00
 RTMP::rtmp_ping_t *
-RTMP::decodePing(Network::byte_t *data)
+RTMP::decodePing(boost::uint8_t *data)
 {
     GNASH_REPORT_FUNCTION;
     
-    Network::byte_t *ptr = reinterpret_cast<Network::byte_t *>(data);
+    boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(data);
     rtmp_ping_t *ping = new rtmp_ping_t;
     memset(ping, 0, sizeof(rtmp_ping_t));
 
@@ -600,12 +600,12 @@
 // address@hidden
 // 43 00 00 00 00 00 15 14 02 00 08 6f 6e 42 57 44 6f 6e 65 00 40 00 00 00 00 
00 00 00 05
 RTMPMsg *
-RTMP::decodeMsgBody(Network::byte_t *data, size_t size)
+RTMP::decodeMsgBody(boost::uint8_t *data, size_t size)
 {
     GNASH_REPORT_FUNCTION;
     AMF amf_obj;
-    Network::byte_t *ptr = data;
-    Network::byte_t* tooFar = ptr + size;
+    boost::uint8_t *ptr = data;
+    boost::uint8_t* tooFar = ptr + size;
     bool status = false;
 
     // The first data object is the method name of this object.
@@ -816,7 +816,7 @@
 
     size_t partial = RTMP_VIDEO_PACKET_SIZE;
     size_t nbytes = 0;
-    Network::byte_t header = 0xc3;
+    boost::uint8_t header = 0xc3;
     
     while (nbytes <= data->size()) {
        if ((data->size() - nbytes) < static_cast<signed 
int>(RTMP_VIDEO_PACKET_SIZE)) {
@@ -852,7 +852,7 @@
     RTMP::rtmp_head_t *rthead = 0;
     RTMPMsg *msg = 0;
     boost::shared_ptr<amf::Buffer> buf;
-    Network::byte_t *ptr = 0;
+    boost::uint8_t *ptr = 0;
 
 
     buf = recvMsg(1);  // use a 1 second timeout
@@ -1043,7 +1043,7 @@
     }
     
     // split the buffer at the chunksize boundary
-    Network::byte_t *ptr = 0;
+    boost::uint8_t *ptr = 0;
     rtmp_head_t *rthead = 0;
     size_t pktsize = 0;
     size_t nbytes = 0;

=== modified file 'libnet/rtmp.h'
--- a/libnet/rtmp.h     2008-09-22 22:56:11 +0000
+++ b/libnet/rtmp.h     2008-12-20 17:11:55 +0000
@@ -34,7 +34,7 @@
 namespace gnash
 {
 
-const Network::byte_t RTMP_HANDSHAKE = 0x3;
+const boost::uint8_t RTMP_HANDSHAKE = 0x3;
 const int  RTMP_BODY_SIZE = 1536;
 const int  MAX_AMF_INDEXES = 64;
 
@@ -63,8 +63,8 @@
 // The third and fourth bytes form an integer value that specifies the
 // number of headers.
 typedef struct {
-    gnash::Network::byte_t version;
-    gnash::Network::byte_t source;
+    boost::uint8_t version;
+    boost::uint8_t source;
     boost::uint32_t  count;
 } amfpacket_t;
 
@@ -211,7 +211,7 @@
     virtual ~RTMP();
 
     // Decode
-    rtmp_head_t *decodeHeader(gnash::Network::byte_t *header);
+    rtmp_head_t *decodeHeader(boost::uint8_t *header);
     rtmp_head_t *decodeHeader(boost::shared_ptr<amf::Buffer> data);
     boost::shared_ptr<amf::Buffer> encodeHeader(int amf_index, 
rtmp_headersize_e head_size,
                              size_t total_size, content_types_e type, 
RTMPMsg::rtmp_source_e routing);
@@ -225,7 +225,7 @@
     void addProperty(std::string &name, boost::shared_ptr<amf::Element> el);
     boost::shared_ptr<amf::Element> getProperty(const std::string &name);
     void setHandler(Handler *hand) { _handler = hand; };
-    int headerSize(gnash::Network::byte_t header);
+    int headerSize(boost::uint8_t header);
 
     rtmp_head_t *getHeader()    { return &_header; };
     int getHeaderSize()         { return _header.head_size; }; 
@@ -236,10 +236,10 @@
     int getMysteryWord()        { return _mystery_word; };
 
     // Decode an RTMP message
-    RTMPMsg *decodeMsgBody(Network::byte_t *data, size_t size);
+    RTMPMsg *decodeMsgBody(boost::uint8_t *data, size_t size);
     RTMPMsg *decodeMsgBody(boost::shared_ptr<amf::Buffer> buf);
     
-    virtual rtmp_ping_t *decodePing(Network::byte_t *data);
+    virtual rtmp_ping_t *decodePing(boost::uint8_t *data);
     rtmp_ping_t *decodePing(boost::shared_ptr<amf::Buffer> buf);
     
     // These are handlers for the various types

=== modified file 'libnet/rtmp_client.cpp'
--- a/libnet/rtmp_client.cpp    2008-11-29 01:40:58 +0000
+++ b/libnet/rtmp_client.cpp    2008-12-20 17:11:55 +0000
@@ -339,7 +339,7 @@
     // Since we don't know what the format is, create a pattern we can
     // recognize if we stumble across it later on.
     for (int i=0; i<RTMP_BODY_SIZE; i++) {
-       Network::byte_t pad = i^256;
+       boost::uint8_t pad = i^256;
         *_handshake += pad;
     }
     

=== modified file 'libnet/rtmp_msg.h'
--- a/libnet/rtmp_msg.h 2008-09-22 22:56:11 +0000
+++ b/libnet/rtmp_msg.h 2008-12-20 17:11:55 +0000
@@ -103,8 +103,8 @@
     void setStatus(rtmp_status_e st)     { _status = st; };
     rtmp_status_e getStatus()           { return _status; };
 
-    void setChannel(Network::byte_t num) { _channel = num; };
-    Network::byte_t getChannel()         { return _channel; } ;
+    void setChannel(boost::uint8_t num) { _channel = num; };
+    boost::uint8_t getChannel()         { return _channel; } ;
 
     boost::shared_ptr<amf::Element> operator[](size_t x);
 
@@ -117,7 +117,7 @@
     std::string           _method;
     double                _streamid;
     std::vector<boost::shared_ptr<amf::Element> > _amfobjs;
-    Network::byte_t       _channel;
+    boost::uint8_t       _channel;
 };
 
 } // end of gnash namespace

=== modified file 'libnet/rtmp_server.cpp'
--- a/libnet/rtmp_server.cpp    2008-12-15 03:46:09 +0000
+++ b/libnet/rtmp_server.cpp    2008-12-20 17:11:55 +0000
@@ -185,7 +185,7 @@
     GNASH_REPORT_FUNCTION;
 
     unsigned int amf_index, headersize;
-    Network::byte_t *ptr = buf->reference();
+    boost::uint8_t *ptr = buf->reference();
     AMF amf;
     
     if (buf->reference() == 0) {
@@ -208,16 +208,16 @@
 //     }
 
 // #if 1
-//     Network::byte_t *end = buf->remove(0xc3);
+//     boost::uint8_t *end = buf->remove(0xc3);
 // #else
-//     Network::byte_t *end = buf->find(0xc3);
+//     boost::uint8_t *end = buf->find(0xc3);
 //     log_debug("END is %x", (void *)end);
 //     *end = '*';
 // #endif
     decodeHeader(ptr);
     ptr += headersize;
 
-    Network::byte_t* tooFar = ptr+300+sizeof(int); // FIXME:
+    boost::uint8_t* tooFar = ptr+300+sizeof(int); // FIXME:
     
     AMF amf_obj;
     boost::shared_ptr<amf::Element> el1 = amf_obj.extractAMF(ptr, tooFar);
@@ -369,7 +369,7 @@
     GNASH_REPORT_FUNCTION;
     
 //    Buffer *buf = new Buffer;
-//     Network::byte_t *ptr = buf->reference();
+//     boost::uint8_t *ptr = buf->reference();
 //     buf->clear();           // default everything to zeros, real data gets 
optionally added.
 //    ptr += sizeof(boost::uint16_t); // go past the first short
 //     const char *capabilities = 0;
@@ -491,7 +491,7 @@
     boost::shared_ptr<amf::Buffer> buf(new Buffer(strbuf->size() + 
numbuf->size() + topbuf->size()));
     *buf += strbuf;
     *buf += numbuf;
-    Network::byte_t byte = static_cast<Network::byte_t>(RTMP::SERVER & 
0x000000ff);
+    boost::uint8_t byte = static_cast<boost::uint8_t>(RTMP::SERVER & 
0x000000ff);
     *buf += byte;
     *buf += topbuf;
 
@@ -617,7 +617,7 @@
 {
     GNASH_REPORT_FUNCTION;
     boost::shared_ptr<amf::Buffer> buf(new Buffer(sizeof(boost::uint16_t) * 
3));
-    Network::byte_t *ptr = buf->reference();
+    boost::uint8_t *ptr = buf->reference();
     buf->clear();      // default everything to zeros, real data gets 
optionally added.
 
     boost::uint16_t typefield = htons(type);
@@ -636,7 +636,7 @@
          ptr += sizeof(boost::uint16_t); // go past the second short
          swapped = milliseconds;
          swapBytes(&swapped, sizeof(boost::uint32_t));
-         buf->append((Network::byte_t *)&swapped, sizeof(boost::uint32_t));
+         buf->append((boost::uint8_t *)&swapped, sizeof(boost::uint32_t));
          break;
       }
       // reset doesn't have any parameters
@@ -649,7 +649,7 @@
 //       swapped = htonl(milliseconds);
          swapped = milliseconds;
          swapBytes(&swapped, sizeof(boost::uint32_t));
-         buf->append((Network::byte_t *)&swapped, sizeof(boost::uint32_t));
+         buf->append((boost::uint8_t *)&swapped, sizeof(boost::uint32_t));
          break;
       }
       default:

=== modified file 'testsuite/libamf.all/test_amf.cpp'
--- a/testsuite/libamf.all/test_amf.cpp 2008-12-18 08:02:50 +0000
+++ b/testsuite/libamf.all/test_amf.cpp 2008-12-26 18:33:26 +0000
@@ -236,7 +236,7 @@
         buf = AMF::encodeElement(el);
         
         check_equals(*buf->reference(), Element::STRING_AMF0);
-        xcheck_equals(buf->size(), str.size()+AMF_HEADER_SIZE);
+        check_equals(buf->size(), str.size()+AMF_HEADER_SIZE);
         // A String AMF object has a 3 bytes head, the type, and a two byte 
length.
         check((memcmp(buf->reference() + 3, str.c_str(), str.size()) == 0));
     }
@@ -268,7 +268,7 @@
 
         // A NULL String AMF object has just 3 bytes, the type, and a two byte 
length, which is zero.
         check_equals(*buf->reference(), Element::STRING_AMF0);
-        xcheck_equals(buf->size(), (size_t)AMF_HEADER_SIZE);
+        check_equals(buf->size(), (size_t)AMF_HEADER_SIZE);
         check_equals(len, 0);
     }
 
@@ -306,7 +306,7 @@
     boost::shared_ptr<Buffer> hex2(new Buffer("0a 00 00 00 c8 00 3f a4 7a e1 
47 ae 14 7b 00 40 03 d7 0a 3d 70 a3 d7 00 40 13 85 1e b8 51 eb 85 00 40 1d 1e 
b8 51 eb 85 1f 00 40 23 5c 28 f5 c2 8f 5c 00 40 28 28 f5 c2 8f 5c 29 00 40 2c 
f5 c2 8f 5c 28 f6 00 40 30 e1 47 ae 14 7a e1 00 40 33 47 ae 14 7a e1 48 00 40 
35 ae 14 7a e1 47 ae 00 40 38 14 7a e1 47 ae 14 00 40 3a 7a e1 47 ae 14 7b 00 
40 3c e1 47 ae 14 7a e1 00 40 3f 47 ae 14 7a e1 48 00 40 40 d7 0a 3d 70 a3 d7 
00 40 42 0a 3d 70 a3 d7 0a 00 40 43 3d 70 a3 d7 0a 3d 00 40 44 70 a3 d7 0a 3d 
71 00 40 45 a3 d7 0a 3d 70 a4 00 40 46 d7 0a 3d 70 a3 d7 00 40 48 0a 3d 70 a3 
d7 0a 00 40 49 3d 70 a3 d7 0a 3d 00 40 4a 70 a3 d7 0a 3d 71 00 40 4b a3 d7 0a 
3d 70 a4 00 40 4c d7 0a 3d 70 a3 d7 00 40 4e 0a 3d 70 a3 d7 0a 00 40 4f 3d 70 
a3 d7 0a 3d 00 40 50 38 51 eb 85 1e b8 00 40 50 d1 eb 85 1e b8 52 00 40 51 6b 
85 1e b8 51 ec 00 40 52 05 1e b8 51 eb 85 00 40 52 9e b8 51 eb 85 1f 00 40 53 
38 51 eb 85 1e b8 00 40 53 d1 eb 85 1e b8 52 00 40 54 6b 85 1e b8 51 ec 00 40 
55 05 1e b8 51 eb 85 00 40 55 9e b8 51 eb 85 1f 00 40 56 38 51 eb 85 1e b8 00 
40 56 d1 eb 85 1e b8 52 00 40 57 6b 85 1e b8 51 ec 00 40 58 05 1e b8 51 eb 85 
00 40 58 9e b8 51 eb 85 1f 00 40 59 38 51 eb 85 1e b8 00 40 59 d1 eb 85 1e b8 
52 00 40 5a 6b 85 1e b8 51 ec 00 40 5b 05 1e b8 51 eb 85 00 40 5b 9e b8 51 eb 
85 1f 00 40 5c 38 51 eb 85 1e b8 00 40 5c d1 eb 85 1e b8 52 00 40 5d 6b 85 1e 
b8 51 ec 00 40 5e 05 1e b8 51 eb 85 00 40 5e 9e b8 51 eb 85 1f 00 40 5f 38 51 
eb 85 1e b8 00 40 5f d1 eb 85 1e b8 52 00 40 60 35 c2 8f 5c 28 f6 00 40 60 82 
8f 5c 28 f5 c3 00 40 60 cf 5c 28 f5 c2 8f 00 40 61 1c 28 f5 c2 8f 5c 00 40 61 
68 f5 c2 8f 5c 29 00 40 61 b5 c2 8f 5c 28 f6 00 40 62 02 8f 5c 28 f5 c3 00 40 
62 4f 5c 28 f5 c2 8f 00 40 62 9c 28 f5 c2 8f 5c 00 40 62 e8 f5 c2 8f 5c 29 00 
40 63 35 c2 8f 5c 28 f6 00 40 63 82 8f 5c 28 f5 c3 00 40 63 cf 5c 28 f5 c2 8f 
00 40 64 1c 28 f5 c2 8f 5c 00 40 64 68 f5 c2 8f 5c 29 00 40 64 b5 c2 8f 5c 28 
f6 00 40 65 02 8f 5c 28 f5 c3 00 40 65 4f 5c 28 f5 c2 8f 00 40 65 9c 28 f5 c2 
8f 5c 00 40 65 e8 f5 c2 8f 5c 29 00 40 66 35 c2 8f 5c 28 f6 00 40 66 82 8f 5c 
28 f5 c3 00 40 66 cf 5c 28 f5 c2 8f 00 40 67 1c 28 f5 c2 8f 5c 00 40 67 68 f5 
c2 8f 5c 29 00 40 67 b5 c2 8f 5c 28 f6 00 40 68 02 8f 5c 28 f5 c3 00 40 68 4f 
5c 28 f5 c2 8f 00 40 68 9c 28 f5 c2 8f 5c 00 40 68 e8 f5 c2 8f 5c 29 00 40 69 
35 c2 8f 5c 28 f6 00 40 69 82 8f 5c 28 f5 c3 00 40 69 cf 5c 28 f5 c2 8f 00 40 
6a 1c 28 f5 c2 8f 5c 00 40 6a 68 f5 c2 8f 5c 29 00 40 6a b5 c2 8f 5c 28 f6 00 
40 6b 02 8f 5c 28 f5 c3 00 40 6b 4f 5c 28 f5 c2 8f 00 40 6b 9c 28 f5 c2 8f 5c 
00 40 6b e8 f5 c2 8f 5c 29 00 40 6c 35 c2 8f 5c 28 f6 00 40 6c 82 8f 5c 28 f5 
c3 00 40 6c cf 5c 28 f5 c2 8f 00 40 6d 1c 28 f5 c2 8f 5c 00 40 6d 68 f5 c2 8f 
5c 29 00 40 6d b5 c2 8f 5c 28 f6 00 40 6e 02 8f 5c 28 f5 c3 00 40 6e 4f 5c 28 
f5 c2 8f 00 40 6e 9c 28 f5 c2 8f 5c 00 40 6e e8 f5 c2 8f 5c 29 00 40 6f 35 c2 
8f 5c 28 f6 00 40 6f 82 8f 5c 28 f5 c3 00 40 6f cf 5c 28 f5 c2 8f 00 40 70 0e 
14 7a e1 47 ae 00 40 70 34 7a e1 47 ae 14 00 40 70 5a e1 47 ae 14 7b 00 40 70 
81 47 ae 14 7a e1 00 40 70 a7 ae 14 7a e1 48 00 40 70 ce 14 7a e1 47 ae 00 40 
70 f4 7a e1 47 ae 14 00 40 71 1a e1 47 ae 14 7b 00 40 71 41 47 ae 14 7a e1 00 
40 71 67 ae 14 7a e1 48 00 40 71 8e 14 7a e1 47 ae 00 40 71 b4 7a e1 47 ae 14 
00 40 71 da e1 47 ae 14 7b 00 40 72 01 47 ae 14 7a e1 00 40 72 27 ae 14 7a e1 
48 00 40 72 4e 14 7a e1 47 ae 00 40 72 74 7a e1 47 ae 14 00 40 72 9a e1 47 ae 
14 7b 00 40 72 c1 47 ae 14 7a e1 00 40 72 e7 ae 14 7a e1 48 00 40 73 0e 14 7a 
e1 47 ae 00 40 73 34 7a e1 47 ae 14 00 40 73 5a e1 47 ae 14 7b 00 40 73 81 47 
ae 14 7a e1 00 40 73 a7 ae 14 7a e1 48 00 40 73 ce 14 7a e1 47 ae 00 40 73 f4 
7a e1 47 ae 14 00 40 74 1a e1 47 ae 14 7b 00 40 74 41 47 ae 14 7a e1 00 40 74 
67 ae 14 7a e1 48 00 40 74 8e 14 7a e1 47 ae 00 40 74 b4 7a e1 47 ae 14 00 40 
74 da e1 47 ae 14 7b 00 40 75 01 47 ae 14 7a e1 00 40 75 27 ae 14 7a e1 48 00 
40 75 4e 14 7a e1 47 ae 00 40 75 74 7a e1 47 ae 14 00 40 75 9a e1 47 ae 14 7b 
00 40 75 c1 47 ae 14 7a e1 00 40 75 e7 ae 14 7a e1 48 00 40 76 0e 14 7a e1 47 
ae 00 40 76 34 7a e1 47 ae 14 00 40 76 5a e1 47 ae 14 7b 00 40 76 81 47 ae 14 
7a e1 00 40 76 a7 ae 14 7a e1 48 00 40 76 ce 14 7a e1 47 ae 00 40 76 f4 7a e1 
47 ae 14 00 40 77 1a e1 47 ae 14 7b 00 40 77 41 47 ae 14 7a e1 00 40 77 67 ae 
14 7a e1 48 00 40 77 8e 14 7a e1 47 ae 00 40 77 b4 7a e1 47 ae 14 00 40 77 da 
e1 47 ae 14 7b 00 40 78 01 47 ae 14 7a e1 00 40 78 27 ae 14 7a e1 48 00 40 78 
4e 14 7a e1 47 ae 00 40 78 74 7a e1 47 ae 14 00 40 78 9a e1 47 ae 14 7b 00 40 
78 c1 47 ae 14 7a e1 00 40 78 e7 ae 14 7a e1 48 00 40 79 0e 14 7a e1 47 ae 00 
40 79 34 7a e1 47 ae 14 00 40 79 5a e1 47 ae 14 7b 00 40 79 81 47 ae 14 7a e1 
00 40 79 a7 ae 14 7a e1 48 00 40 79 ce 14 7a e1 47 ae 00 40 79 f4 7a e1 47 ae 
14 00 40 7a 1a e1 47 ae 14 7b 00 40 7a 41 47 ae 14 7a e1 00 40 7a 67 ae 14 7a 
e1 48 00 40 7a 8e 14 7a e1 47 ae 00 40 7a b4 7a e1 47 ae 14 00 40 7a da e1 47 
ae 14 7b 00 40 7b 01 47 ae 14 7a e1 00 40 7b 27 ae 14 7a e1 48 00 40 7b 4e 14 
7a e1 47 ae 00 40 7b 74 7a e1 47 ae 14 00 40 7b 9a e1 47 ae 14 7b 00 40 7b c1 
47 ae 14 7a e1 00 40 7b e7 ae 14 7a e1 48 00 40 7c 0e 14 7a e1 47 ae 00 40 7c 
34 7a e1 47 ae 14 00 40 7c 5a e1 47 ae 14 7b 00 40 7c 81 47 ae 14 7a e1 00 40 
7c a7 ae 14 7a e1 48 00 40 7c ce 14 7a e1 47 ae 00 40 7c f4 7a e1 47 ae 14 00 
40 7d 1a e1 47 ae 14 7b 00 40 7d 41 47 ae 14 7a e1 00 40 7d 67 ae 14 7a e1 48 
00 40 7d 82 8f 5c 28 f5 c3 00 40 7d 83 33 33 33 33 33 00 40 7d a9 99 99 99 99 
9a"));
     boost::shared_ptr<amf::Element> el2 = amf.extractAMF(hex2);
     if ((el2->getType() == Element::STRICT_ARRAY_AMF0)
-        && (el2->propertySize() == 22)) {
+        && (el2->propertySize() == 200)) {
         runtest.pass("Extracted Strict Array");
     } else {
         runtest.fail("Extracted Strict Array");

=== modified file 'testsuite/libamf.all/test_buffer.cpp'
--- a/testsuite/libamf.all/test_buffer.cpp      2008-11-26 17:11:56 +0000
+++ b/testsuite/libamf.all/test_buffer.cpp      2008-12-26 18:40:59 +0000
@@ -177,7 +177,7 @@
         mem->addStats(__LINE__);             // take a sample
     }
 #endif    
-    if (buf.size() == gnash::NETBUFSIZE) {
+    if (buf.size() == amf::NETBUFSIZE) {
         runtest.pass ("Buffer::size(NETBUFSIZE)");
     } else {
         runtest.fail ("Buffer::size(NETBUFSIZE)");
@@ -674,10 +674,12 @@
     buf6.clear();
     buf6 += 'D';
     buf6 += 'E';
-    buf6 += 'F';
+    buf6 += 'F';    
     buf5 += buf6;
     ptr3 = buf5.reference();    // refresh the pointer, as it changes
                                 // on a resize()
+    // when appending Buffers, this destination has enough space to hold
+    // the allocated bytes from the source.
     if ((memcmp(ptr3, "abcDEF", 6) == 0) && (buf5.size() == 10)) {
          runtest.pass ("Buffer::operator+=(Buffer &)");
     } else {
@@ -685,6 +687,11 @@
     }
 
     bool caught = false;
+
+    // make the source Buffer have more data
+    buf6 += 'A';
+    buf6 += 'B';
+    buf6 += 'C';
     try {
         buf5 += buf6;
     }
@@ -693,6 +700,9 @@
         caught = true;
 //        log_debug("Got exeception from operator+=: %s", ge.what());
     }
+    // when appending Buffers, this destination doesn't have enough space to
+    // hold the allocated bytes from the source, so is supposed to throw an
+    //exception.
     if (caught) {
          runtest.pass ("Buffer::operator+=(Buffer &) error");
     } else {

=== modified file 'testsuite/libamf.all/test_el.cpp'
--- a/testsuite/libamf.all/test_el.cpp  2008-09-22 22:56:11 +0000
+++ b/testsuite/libamf.all/test_el.cpp  2008-12-26 18:23:01 +0000
@@ -382,8 +382,11 @@
     } else {
         runtest.fail("Made Unsupported Object element");
     }
-    
-    // Test recreating an element as a large size data type.
+
+#if 0
+    // this test is currently bogus, as we don't resize buffers when
+    // changing types, which shouldn't really be allowed anyway.
+    // Test recreating an element as a larger size data type.
     Element rel1;
     rel1.clear();
     rel1.makeBoolean(true);
@@ -395,7 +398,8 @@
     } else {
         runtest.fail("Remade boolean as a double element");
     }
-
+#endif
+    
 // amf::Element::makeNumber(std::string const&, double)
 // amf::Element::makeObject(unsigned char*, unsigned int)
 // amf::Element::makeString(char const*, unsigned int)

=== modified file 'testsuite/libnet.all/test_cque.cpp'
--- a/testsuite/libnet.all/test_cque.cpp        2008-11-21 15:15:25 +0000
+++ b/testsuite/libnet.all/test_cque.cpp        2008-12-21 01:55:56 +0000
@@ -136,13 +136,13 @@
      boost::shared_ptr<amf::Buffer> merge3(new Buffer);
      size_t i;
      ptr = merge1->reference();
-     for (i=0; i<gnash::NETBUFSIZE; i++) {
+     for (i=0; i<amf::NETBUFSIZE; i++) {
          ptr[i] = i*'A';
      }
      que.push(merge1);
      
      ptr = merge2->reference();
-     for (i=0; i<gnash::NETBUFSIZE; i++) {
+     for (i=0; i<amf::NETBUFSIZE; i++) {
          ptr[i] = i+'a';
      }
      que.push(merge2);
@@ -159,7 +159,7 @@
      if (foo == 0) {
          runtest.unresolved("CQue::merge()");
      } else {
-         if (foo->size() == (gnash::NETBUFSIZE * 2) + 96) {
+         if (foo->size() == (amf::NETBUFSIZE * 2) + 96) {
              runtest.pass("CQue::merge()");
          } else {
              runtest.fail("CQue::merge()");

=== modified file 'testsuite/libnet.all/test_http.cpp'
--- a/testsuite/libnet.all/test_http.cpp        2008-12-26 08:08:51 +0000
+++ b/testsuite/libnet.all/test_http.cpp        2008-12-26 18:55:58 +0000
@@ -1,4 +1,4 @@
- // 
+// 
 //   Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 // 
 // This program is free software; you can redistribute it and/or modify
@@ -44,6 +44,7 @@
 #include "network.h"
 #include "amf.h"
 #include "buffer.h"
+#include "utility.h"
 
 using namespace gnash;
 using namespace amf;
@@ -52,6 +53,7 @@
 static void usage (void);
 static void tests (void);
 static void test_post (void);
+static void test_rtmpt (void);
 
 static TestState runtest;
 
@@ -80,6 +82,7 @@
 
     tests();
     test_post();
+    test_rtmpt();
 }
 
 
@@ -290,7 +293,7 @@
     // HTTP/1.1 200 OK\r\nDate: Tue, 1 Apr 2008 19:58:40 GMT\r\nServer: Cygnal 
(GNU/Linux)\r\nLast-Modified: Tue, 1 Apr 2008 19:58:40 GMT\r\nEtag: 
24103b9-1c54-ec8632c0\r\nAccept-Ranges: bytes\r\nContent-Length: 0\r\nKeep
     http.clearHeader();
     http.formatHeader(HTTP::OK);
-    cerr << "FIXME: " << http.getHeader() << endl;
+//    cerr << "FIXME: " << http.getHeader() << endl;
     regcomp (&regex_pat, "HTTP/[0-9].[0-9] 200 
OK.*Date:.*Server:.*:.*-Length.*-Type:.*$",
              REG_NOSUB);        // note that we do want to look for NL
     if (regexec (&regex_pat, reinterpret_cast<const char*>(http.getHeader()), 
0, (regmatch_t *)0, 0)) {
@@ -330,7 +333,7 @@
     // Decoding tests for HTTP
     //
     http.clearHeader();
-    Network::byte_t *buffer = (Network::byte_t *)"GET 
/software/gnash/tests/flvplayer.swf?file=http://localhost/software/gnash/tests/Ouray_Ice_Festival_Climbing_Competition.flv
 HTTP/1.1\r\n"
+    boost::uint8_t *buffer = (boost::uint8_t *)"GET 
/software/gnash/tests/flvplayer.swf?file=http://localhost/software/gnash/tests/Ouray_Ice_Festival_Climbing_Competition.flv
 HTTP/1.1\r\n"
 "User-Agent: Gnash/0.8.1-cvs (X11; Linux i686; U; en)\r\n"
 "Host: localhost:4080\r\n"
 "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, 
image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n"
@@ -357,7 +360,7 @@
 // User Agent: Lynx/2.8.6rel.2 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8b
 
 #if 0
-    Network::byte_t *field1 = (Network::byte_t *)"GET /index.html HTTP/1.1";
+    boost::uint8_t *field1 = (boost::uint8_t *)"GET /index.html HTTP/1.1";
     HTTP http1;
     http1.extractMethod(field1);
     if ((http1.keepAlive() == true) && (http1.getVersion()->minor == 1)) {
@@ -366,7 +369,7 @@
         runtest.fail ("HTTP::extractMethod(HTTP/1.1)");
     }
 
-    Network::byte_t *field2 = (Network::byte_t *)"GET /index.html HTTP/1.0";
+    boost::uint8_t *field2 = (boost::uint8_t *)"GET /index.html HTTP/1.0";
     HTTP http2;
     http2.extractMethod(field2);
     if ((http2.keepAlive() == false) && (http2.getVersion()->minor == 0)) {
@@ -375,7 +378,7 @@
         runtest.fail ("HTTP::extractMethod(HTTP/1.0)");
     }
 
-    Network::byte_t *field3 = (Network::byte_t *) "Keep-Alive: 300";
+    boost::uint8_t *field3 = (boost::uint8_t *) "Keep-Alive: 300";
     HTTP http3;
     http3.extractKeepAlive(field3);
     if ((http3.keepAlive() == true) && (http3.getMaxRequests() == 300)) {
@@ -384,7 +387,7 @@
         runtest.fail ("HTTP::extractKeepAlive(300)");
     }
     
-    Network::byte_t *field4 = (Network::byte_t *) "Keep-Alive: On";
+    boost::uint8_t *field4 = (boost::uint8_t *) "Keep-Alive: On";
     HTTP http4;
     http4.extractKeepAlive(field4);
     if (http4.keepAlive() == true) {
@@ -393,7 +396,7 @@
         runtest.fail ("HTTP::extractKeepAlive(On)");
     }
     
-    Network::byte_t *field5 = (Network::byte_t *) "Keep-Alive: Off";
+    boost::uint8_t *field5 = (boost::uint8_t *) "Keep-Alive: Off";
     HTTP http5;
     http5.extractKeepAlive(field5);
     if (http5.keepAlive() == false) {
@@ -404,7 +407,7 @@
 
 // Some browsers have a different synatax, of course, to keep things
 // interesting.
-    Network::byte_t *buffer2 = (Network::byte_t *)"GET 
/software/gnash/tests/flvplayer.swf?file=http://localhost/software/gnash/tests/Ouray_Ice_Festival_Climbing_Competition.flv
 HTTP/1.1\r\n)"
+    boost::uint8_t *buffer2 = (boost::uint8_t *)"GET 
/software/gnash/tests/flvplayer.swf?file=http://localhost/software/gnash/tests/Ouray_Ice_Festival_Climbing_Competition.flv
 HTTP/1.1\r\n)"
 "Content-Language: en-US,en;q=0.9\r\n"
 "Content-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\n"
 "Content-Encoding: deflate, gzip, x-gzip, identity, *;q=0\r\n";
@@ -555,7 +558,7 @@
     ptr1.resize();              // shrink the buffer to be the exact size of 
the data
 
     AMF amf;
-    gnash::Network::byte_t *data1 = http.processHeaderFields(ptr1);
+    boost::uint8_t *data1 = http.processHeaderFields(ptr1);
     boost::shared_ptr<amf::Element> el1 = amf.extractAMF(data1, data1 + 15);
     string str1 = el1->to_string();
 
@@ -584,18 +587,7 @@
     ptr2 += *encnum;
     ptr2.resize();              // shrink the buffer to be the exact size of 
the data
 
-#if 0
-2...........echo../2............ Hello.world!
-    
-00 00
-00 00 00 01
-00 04 65 63 68 6f
-   00 02 2f 32 00 00 00 14 0a
-00 00 00 01
-   02 00 0c 48 65 6c 6c 6f 20 77 6f 72 6c 64 21
-#endif
-        
-    gnash::Network::byte_t *data2 = http.processHeaderFields(ptr2);
+    boost::uint8_t *data2 = http.processHeaderFields(ptr2);
     boost::shared_ptr<amf::Element> el2 = amf.extractAMF(data2, data2 + 15);
     if ((http.getField("host") == "localhost:5080")
         && (el2->to_number() == 1.2345)
@@ -627,22 +619,977 @@
         }
     }
 
-#if 0
+    // Make sure we can parse the Red5 echo_test client messages.
+    boost::shared_ptr<Buffer> hex1(new Buffer("00 00 00 00 00 01 00 04 65 63 
68 6f 00 02 2f 32 00 00 00 14 0a 00 00 00 01 02 00 0c 48 65 6c 6c 6f 20 77 6f 
72 6c 64 21"));
+    boost::shared_ptr<Buffer> hex2(new Buffer("00 00 00 00 00 01 00 0b 2f 32 
2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 02 00 0c 48 65 6c 6c 
6f 20 77 6f 72 6c 64 21"));
 //    http.clearFields();
-    amf::Buffer &buf1 = http.formatEcho("2", *encstr);
-    http.processHeaderFields(buf1);
-    cerr << "FIXME: " << http.getField("content-length") << endl;
-    
-    if (http.getField("content-length") == "26") {
-        runtest.pass("HTTP::formatEcho()");
-    } else {
-        runtest.fail("HTTP::formatEcho()");
-    }
-#endif
-    
-     if (dbglogfile.getVerbosity() > 0) {
-         http.dump();
-     }
+    vector<boost::shared_ptr<amf::Element> > headers = 
http.parseEchoRequest(*hex1);
+
+    if ((strncmp(headers[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers[1]->getName(), "/2", 2) == 0)
+        && (strncmp(headers[3]->to_string(), "Hello world!", 12) == 0)) {
+        runtest.pass("HTTP::parseEchoRequest()");
+    } else {
+        runtest.fail("HTTP::parseEchoRequest()");
+    }
+
+    amf::Buffer &buff = http.formatEchoResponse(headers[1]->getName(), 
*headers[3]);
+    string head(reinterpret_cast<const char *>(buff.reference()));
+    const char *ptr3 = reinterpret_cast<const char *>(hex2->reference());
+    const char *ptr4 = reinterpret_cast<const char *>(buff.reference()) + 
head.size();
+    
+    if (memcmp(ptr3, ptr4, hex2->allocated()) == 0) {
+        runtest.pass("HTTP::formatEchoResponse()");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse()");
+    }
+    
+    if (dbglogfile.getVerbosity() > 0) {
+        http.dump();
+    }
+}
+
+void
+test_rtmpt (void)
+{
+
+    HTTP http;
+    
+    // Boolean True request
+    boost::shared_ptr<Buffer> hex_req1(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 31 00 00 00 07 0a 00 00 00 01 01 01"));
+    vector<boost::shared_ptr<amf::Element> > headers1 = 
http.parseEchoRequest(*hex_req1);
+    if ((strncmp(headers1[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers1[1]->getName(), "/1", 2) == 0)
+        && (headers1[3]->getType() == Element::BOOLEAN_AMF0)
+        && (headers1[3]->to_bool() == true)) {
+        runtest.pass("HTTP::parseEchoRequest(Boolean TRUE)");
+    } else {
+        runtest.fail("HTTP::parseEchoRequest(Boolean TRUE)");
+    }
+    // Boolean True response
+    boost::shared_ptr<Buffer> hex_res1(new Buffer("00 00 00 00 00 01 00 0b 2f 
31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 01 01"));
+    amf::Buffer &buf1 = http.formatEchoResponse(headers1[1]->getName(), 
*headers1[3]);
+    string head1(reinterpret_cast<const char *>(buf1.reference()));
+    const char *ptr1a = reinterpret_cast<const char *>(hex_res1->reference());
+    const char *ptr1b = reinterpret_cast<const char *>(buf1.reference()) + 
head1.size();
+    if (memcmp(ptr1a, ptr1b, hex_res1->allocated()-1) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Boolean TRUE)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Boolean TRUE)");
+    }    
+    
+
+    // Boolean false request
+    boost::shared_ptr<Buffer> hex_req2(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 32 00 00 00 07 0a 00 00 00 01 01 00"));
+    vector<boost::shared_ptr<amf::Element> > headers2 = 
http.parseEchoRequest(*hex_req2);
+    if ((strncmp(headers2[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers2[1]->getName(), "/2", 2) == 0)
+        && (headers2[3]->getType() == Element::BOOLEAN_AMF0)
+        && (headers2[3]->to_bool() == false)) {
+        runtest.pass("HTTP::parseEchoRequest(Boolean FALSE)");
+    } else {
+        runtest.fail("HTTP::parseEchoRequest(Boolean FALSE)");
+    }
+    // Boolean False response
+    boost::shared_ptr<Buffer> hex_res2(new Buffer("00 00 00 00 00 01 00 0b 2f 
32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 01 00"));
+    amf::Buffer &buf2 = http.formatEchoResponse(headers2[1]->getName(), 
*headers2[3]);
+    string head2(reinterpret_cast<const char *>(buf2.reference()));
+    const char *ptr2a = reinterpret_cast<const char *>(hex_res2->reference());
+    const char *ptr2b = reinterpret_cast<const char *>(buf2.reference()) + 
head2.size();
+    if (memcmp(ptr2a, ptr2b, hex_res2->allocated()-1) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Boolean FALSE)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Boolean FALSE)");
+    }    
+
+    // NULL Object request
+    boost::shared_ptr<Buffer> hex_req3(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 31 00 00 00 06 0a 00 00 00 01 05"));
+    vector<boost::shared_ptr<amf::Element> > headers3 = 
http.parseEchoRequest(*hex_req3);
+    if ((strncmp(headers3[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers3[1]->getName(), "/1", 2) == 0)
+        && (headers3[3]->getType() == Element::NULL_AMF0)) {
+        runtest.pass("HTTP::parseEchoRequest(NULL Object)");
+    } else {
+        runtest.fail("HTTP::parseEchoRequest(NULL Object)");
+    }
+    // NULL Object response
+    boost::shared_ptr<Buffer> hex_res3(new Buffer("00 00 00 00 00 01 00 0b 2f 
31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 05"));
+    amf::Buffer &buf3 = http.formatEchoResponse(headers3[1]->getName(), 
*headers3[3]);
+    string head3(reinterpret_cast<const char *>(buf3.reference()));
+    const char *ptr3a = reinterpret_cast<const char *>(hex_res3->reference());
+    const char *ptr3b = reinterpret_cast<const char *>(buf3.reference()) + 
head3.size();
+    if (memcmp(ptr3a, ptr3b, hex_res3->allocated()) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(NULL Object)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(NULL Object)");
+    }    
+
+    // UNDEFINED Object request
+    boost::shared_ptr<Buffer> hex_req4(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 31 00 00 00 06 0a 00 00 00 01 06"));
+    vector<boost::shared_ptr<amf::Element> > headers4 = 
http.parseEchoRequest(*hex_req4);
+    if ((strncmp(headers4[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers4[1]->getName(), "/1", 2) == 0)
+        && (headers4[3]->getType() == Element::UNDEFINED_AMF0)) {
+        runtest.pass("HTTP::parseEchoRequest(UNDEFINED Object)");
+    } else {
+        runtest.fail("HTTP::parseEchoRequest(UNDEFINED Object)");
+    }
+    // UNDEFINED Object response
+    boost::shared_ptr<Buffer> hex_res4(new Buffer("00 00 00 00 00 01 00 0b 2f 
31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 05"));
+    amf::Buffer &buf4 = http.formatEchoResponse(headers4[1]->getName(), 
*headers4[3]);
+    string head4(reinterpret_cast<const char *>(buf4.reference()));
+    const char *ptr4a = reinterpret_cast<const char *>(hex_res4->reference());
+    const char *ptr4b = reinterpret_cast<const char *>(buf4.reference()) + 
head4.size();
+    if (memcmp(ptr4a, ptr4b, hex_res4->allocated()) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(UNDEFINED Object, NULL 
response)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(UNDEFINED Object, NULL 
response)");
+    }    
+
+    // Date Object request
+    boost::shared_ptr<Buffer> hex_req5(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 31 00 00 00 10 0a 00 00 00 01 0b 42 71 e4 ca 4e 32 d0 00 01 
a4"));
+    vector<boost::shared_ptr<amf::Element> > headers5 = 
http.parseEchoRequest(*hex_req5);
+    if (headers5[3] == 0) {
+        runtest.unresolved("HTTP::parseEchoRequest(DATE Object)");
+    } else {
+        double swapped = *reinterpret_cast<const 
double*>(headers5[3]->to_reference());
+        swapBytes(&swapped, amf::AMF0_NUMBER_SIZE);
+        if ((strncmp(headers5[0]->getName(), "echo", 4) == 0)
+            && (strncmp(headers5[1]->getName(), "/1", 2) == 0)
+            && (headers5[3]->getType() == Element::DATE_AMF0)
+            && (headers5[3]->getDataSize() > 0 )
+            && (memcmp(hex_req5->reference()+26, &swapped, 
amf::AMF0_NUMBER_SIZE) == 0)) {
+            runtest.pass("HTTP::parseEchoRequest(DATE Object)");
+        } else {
+            runtest.fail("HTTP::parseEchoRequest(DATE Object)");
+        }
+    }
+    // Date Object response
+    boost::shared_ptr<Buffer> hex_res5(new Buffer("00 00 00 00 00 01 00 0b 2f 
31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0b 42 71 e4 ca 4e 
32 d0 00 fe 5c"));
+    if (headers5[3] == 0) {
+        runtest.unresolved("HTTP::formatEchoResponse(DATE Object)");
+    } else {
+        amf::Buffer &buf5 = http.formatEchoResponse(headers5[1]->getName(), 
*headers5[3]);
+        string head5(reinterpret_cast<const char *>(buf5.reference()));
+        const char *ptr5a = reinterpret_cast<const char 
*>(hex_res5->reference()+30);
+        const char *ptr5b = reinterpret_cast<const char *>(buf5.reference() + 
124);
+        if (memcmp(ptr5a, ptr5b, amf::AMF0_NUMBER_SIZE) == 0) {
+            runtest.pass("HTTP::formatEchoResponse(DATE Object)");
+        } else {
+            runtest.fail("HTTP::formatEchoResponse(DATE Object)");
+        }
+    }
+
+    // Date Array request
+    boost::shared_ptr<Buffer> hex_req6(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 32 00 00 00 18 0a 00 00 00 01 0a 00 00 00 02 0b 42 71 e4 ca 
4e 32 d0 00 01 a4 07 00 01"));
+    vector<boost::shared_ptr<amf::Element> > headers6 = 
http.parseEchoRequest(*hex_req6);
+    if (headers6[3] == 0) {
+        runtest.unresolved("HTTP::parseEchoRequest(DATE Array)");
+    } else {
+        if ((strncmp(headers6[0]->getName(), "echo", 4) == 0)
+            && (strncmp(headers6[1]->getName(), "/2", 2) == 0)
+            && (headers6[3]->getType() == Element::STRICT_ARRAY_AMF0)) {
+            runtest.pass("HTTP::parseEchoRequest(DATE Array)");
+        } else {
+            runtest.fail("HTTP::parseEchoRequest(DATE Array)");
+        }
+    }
+    // Date Array response
+    boost::shared_ptr<Buffer> hex_res6(new Buffer("00 00 00 00 00 01 00 0b 2f 
32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 02 0b 
42 71 e4 ca 4e 32 d0 00 fe 5c 0b 42 71 e4 ca 4e 32 d0 00 fe 5c"));
+    
+    // Undefined Array request
+    boost::shared_ptr<Buffer> hex_req7(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 31 00 00 00 0a 0a 00 00 00 01 0a 00 00 00 00"));
+    vector<boost::shared_ptr<amf::Element> > headers7 = 
http.parseEchoRequest(*hex_req7);
+    if ((strncmp(headers7[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers7[1]->getName(), "/1", 2) == 0)
+        && (headers7[3]->getType() == Element::STRICT_ARRAY_AMF0)) {
+        runtest.pass("HTTP::parseEchoRequest(Undefined Strict Array)");
+    } else {
+        runtest.fail("HTTP::parseEchoRequest(Undefined Strict Array)");
+    }
+    // Undefined Array response
+    boost::shared_ptr<Buffer> hex_res7(new Buffer("00 00 00 00 00 01 00 0b 2f 
31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 00"));
+    amf::Buffer &buf7 = http.formatEchoResponse(headers7[1]->getName(), 
*headers7[3]);
+
+    //    cerr << hexify(hex_res7->reference(), hex_res7->allocated(), false) 
<< endl;
+    string head7(reinterpret_cast<const char *>(buf7.reference()));
+    const char *ptr7a = reinterpret_cast<const char *>(hex_res7->reference());
+    const char *ptr7b = reinterpret_cast<const char *>(buf7.reference()) + 
head7.size();
+    //    cerr << hexify(buf7.reference() + head7.size(), buf7.allocated() - 
head7.size(), false) << endl;
+    if (memcmp(ptr7a, ptr7b, hex_res7->allocated()-1) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Undefined Strict Array)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Undefined Strict Array)");
+    }
+    
+    // Number 1
+    // Array request
+    boost::shared_ptr<Buffer> hex_req8(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 32 00 00 00 13 0a 00 00 00 01 0a 00 00 00 01 00 3f f0 00 00 
00 00 00 00"));
+    vector<boost::shared_ptr<amf::Element> > headers8 = 
http.parseEchoRequest(*hex_req8);
+    if (headers8[3] == 0) {
+        runtest.unresolved("HTTP::parseEchoRequest(Simple Strict Array of 
Numbers, 1 item)");
+    } else {
+        if (headers8[3]->propertySize() > 0) {
+            std::vector<boost::shared_ptr<amf::Element> > props8 = 
headers8[3]->getProperties();
+            if ((strncmp(headers8[0]->getName(), "echo", 4) == 0)
+                && (strncmp(headers8[1]->getName(), "/2", 2) == 0)
+                && (headers8[3]->getType() == Element::STRICT_ARRAY_AMF0)
+                && (props8[0]->getType() == Element::NUMBER_AMF0)
+                && (props8[0]->to_number() == 1)
+                ) {
+                runtest.pass("HTTP::parseEchoRequest(Simple Strict Array of 
Numbers. 1 item)");
+            } else {
+                runtest.fail("HTTP::parseEchoRequest(Simple Strict Array of 
Numbers, 1 item)");
+            }
+        } else {
+            runtest.fail("HTTP::parseEchoRequest(Simple Strict Array of 
Numbers, 1 item)");
+        }
+    }
+    // Undefined Array response
+    boost::shared_ptr<Buffer> hex_res8(new Buffer("00 00 00 00 00 01 00 0b 2f 
32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 01 00 
3f f0 00 00 00 00 00 00"));
+    amf::Buffer &buf8 = http.formatEchoResponse(headers8[1]->getName(), 
*headers8[3]);
+    //    cerr << hexify(hex_res8->reference()+30, amf::AMF0_NUMBER_SIZE, 
false) << endl;
+    //    cerr << hexify(buf8.reference() + 124, amf::AMF0_NUMBER_SIZE, false) 
<< endl;
+    string head8(reinterpret_cast<const char *>(buf8.reference()));
+    const char *ptr8a = reinterpret_cast<const char *>(hex_res8->reference());
+    const char *ptr8b = reinterpret_cast<const char *>(buf8.reference()) + 
head8.size();
+    if (memcmp(ptr8a, ptr8b, hex_res8->allocated()-1) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Simple Strict Array of Numbers, 
1 item)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Simple Strict Array of Numbers, 
1 item)");
+    }
+
+    // Number 1,2
+    // Array request
+    boost::shared_ptr<Buffer> hex_req9(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 33 00 00 00 1c 0a 00 00 00 01 0a 00 00 00 02 00 3f f0 00 00 
00 00 00 00 00 40 00 00 00 00 00 00 00"));
+    vector<boost::shared_ptr<amf::Element> > headers9 = 
http.parseEchoRequest(*hex_req9);
+    if ((strncmp(headers9[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers9[1]->getName(), "/3", 2) == 0)
+        && (headers9[3]->getType() == Element::STRICT_ARRAY_AMF0)) {
+        runtest.pass("HTTP::parseEchoRequest(Simple Strict Array of Numbers, 2 
items)");
+    } else {
+        
+        runtest.fail("HTTP::parseEchoRequest(Simple Strict Array of Numbers, 2 
items)");
+    }
+    // Undefined Array response
+    boost::shared_ptr<Buffer> hex_res9(new Buffer("00 00 00 00 00 01 00 0b 2f 
33 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 02 00 
3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00"));
+    amf::Buffer &buf9 = http.formatEchoResponse(headers9[1]->getName(), 
*headers9[3]);
+    string head9(reinterpret_cast<const char *>(buf9.reference()));
+    const char *ptr9a = reinterpret_cast<const char *>(hex_res9->reference());
+    const char *ptr9b = reinterpret_cast<const char *>(buf9.reference()) + 
head9.size();
+    if (memcmp(ptr9a, ptr9b, hex_res9->allocated()-1) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Simple Strict Array of Numbers, 
2 items)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Simple Strict Array of Numbers, 
2 items)");
+    }
+
+    // Number 1,2,3
+    // Array request
+    boost::shared_ptr<Buffer> hex_req10(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 34 00 00 00 25 0a 00 00 00 01 0a 00 00 00 03 00 3f f0 00 00 
00 00 00 00 00 40 00 00 00 00 00 00 00 00 40 08 00 00 00 00 00 00"));
+    vector<boost::shared_ptr<amf::Element> > headers10 = 
http.parseEchoRequest(*hex_req10);
+    if ((strncmp(headers10[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers10[1]->getName(), "/4", 2) == 0)
+        && (headers10[3]->getType() == Element::STRICT_ARRAY_AMF0)) {
+        runtest.pass("HTTP::parseEchoRequest(Simple Strict Array of Numbers, 3 
items)");
+    } else {
+        
+        runtest.fail("HTTP::parseEchoRequest(Simple Strict Array of Numbers, 3 
items)");
+    }
+    // Undefined Array response
+    boost::shared_ptr<Buffer> hex_res10(new Buffer("00 00 00 00 00 01 00 0b 2f 
34 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 03 00 
3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 00 40 08 00 00 00 00 00 
00"));
+    amf::Buffer &buf10 = http.formatEchoResponse(headers10[1]->getName(), 
*headers10[3]);
+    string head10(reinterpret_cast<const char *>(buf10.reference()));
+    const char *ptr10a = reinterpret_cast<const char 
*>(hex_res10->reference());
+    const char *ptr10b = reinterpret_cast<const char *>(buf10.reference()) + 
head10.size();
+    if (memcmp(ptr10a, ptr10b, hex_res10->allocated()-1) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Simple Strict Array of Numbers, 
3 items)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Simple Strict Array of Numbers, 
3 items)");
+    }
+
+    // Number 0 Request
+    boost::shared_ptr<Buffer> hex_req11(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 31 00 00 00 0e 0a 00 00 00 01 00 00 00 00 00 00 00 00 00"));
+    vector<boost::shared_ptr<amf::Element> > headers11 = 
http.parseEchoRequest(*hex_req11);
+    if ((strncmp(headers11[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers11[1]->getName(), "/1", 2) == 0)
+        && (headers11[3]->getType() == Element::NUMBER_AMF0)
+        && (headers11[3]->to_number() == 0)) {
+        runtest.pass("HTTP::parseEchoRequest(Number 0)");
+    } else {        
+        runtest.fail("HTTP::parseEchoRequest(Number 0)");
+    }
+    // Number 0 Response
+    boost::shared_ptr<Buffer> hex_res11(new Buffer("00 00 00 00 00 01 00 0b 2f 
31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 00 00 00 00 00 
00 00 00"));
+    amf::Buffer &buf11 = http.formatEchoResponse(headers11[1]->getName(), 
*headers11[3]);
+    string head11(reinterpret_cast<const char *>(buf11.reference()));
+    const char *ptr11a = reinterpret_cast<const char 
*>(hex_res11->reference());
+    const char *ptr11b = reinterpret_cast<const char *>(buf11.reference()) + 
head11.size();
+    if (memcmp(ptr11a, ptr11b, hex_res11->allocated()-11) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Number 0)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Number 0)");
+    }    
+
+    // Number 1 Request
+    boost::shared_ptr<Buffer> hex_req12(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 32 00 00 00 0e 0a 00 00 00 01 00 3f f0 00 00 00 00 00 00"));
+    vector<boost::shared_ptr<amf::Element> > headers12 = 
http.parseEchoRequest(*hex_req12);
+    if ((strncmp(headers12[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers12[1]->getName(), "/2", 2) == 0)
+        && (headers12[3]->getType() == Element::NUMBER_AMF0)
+        && (headers12[3]->to_number() == 1)) {
+        runtest.pass("HTTP::parseEchoRequest(Number 1)");
+    } else {        
+        runtest.fail("HTTP::parseEchoRequest(Number 1)");
+    }
+    // Number 1 Response
+    boost::shared_ptr<Buffer> hex_res12(new Buffer("00 00 00 00 00 01 00 0b 2f 
32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 3f f0 00 00 00 
00 00 00"));
+    amf::Buffer &buf12 = http.formatEchoResponse(headers12[1]->getName(), 
*headers12[3]);
+    string head12(reinterpret_cast<const char *>(buf12.reference()));
+    const char *ptr12a = reinterpret_cast<const char 
*>(hex_res12->reference());
+    const char *ptr12b = reinterpret_cast<const char *>(buf12.reference()) + 
head12.size();
+    if (memcmp(ptr12a, ptr12b, hex_res12->allocated()-11) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Number 1)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Number 1)");
+    }    
+
+    // Number -1 Request
+    boost::shared_ptr<Buffer> hex_req13(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 33 00 00 00 0e 0a 00 00 00 01 00 bf f0 00 00 00 00 00 00"));
+    vector<boost::shared_ptr<amf::Element> > headers13 = 
http.parseEchoRequest(*hex_req13);
+    if ((strncmp(headers13[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers13[1]->getName(), "/3", 2) == 0)
+        && (headers13[3]->getType() == Element::NUMBER_AMF0)
+        && (headers13[3]->to_number() == -1)) {
+        runtest.pass("HTTP::parseEchoRequest(Number -1)");
+    } else {        
+        runtest.fail("HTTP::parseEchoRequest(Number -1)");
+    }
+    // Number -1 Response
+    boost::shared_ptr<Buffer> hex_res13(new Buffer("00 00 00 00 00 01 00 0b 2f 
33 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 bf f0 00 00 00 
00 00 00"));
+    amf::Buffer &buf13 = http.formatEchoResponse(headers13[1]->getName(), 
*headers13[3]);
+    string head13(reinterpret_cast<const char *>(buf13.reference()));
+    const char *ptr13a = reinterpret_cast<const char 
*>(hex_res13->reference());
+    const char *ptr13b = reinterpret_cast<const char *>(buf13.reference()) + 
head13.size();
+    if (memcmp(ptr13a, ptr13b, hex_res13->allocated()-11) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Number -1)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Number -1)");
+    }
+
+    // Number 256 Request
+    boost::shared_ptr<Buffer> hex_req14(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 34 00 00 00 0e 0a 00 00 00 01 00 40 70 00 00 00 00 00 00"));
+    vector<boost::shared_ptr<amf::Element> > headers14 = 
http.parseEchoRequest(*hex_req14);
+    if ((strncmp(headers14[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers14[1]->getName(), "/4", 2) == 0)
+        && (headers14[3]->getType() == Element::NUMBER_AMF0)
+        && (headers14[3]->to_number() == 256)) {
+        runtest.pass("HTTP::parseEchoRequest(Number 256)");
+    } else {        
+        runtest.fail("HTTP::parseEchoRequest(Number 256)");
+    }
+    // Number 256 Response
+    boost::shared_ptr<Buffer> hex_res14(new Buffer("00 00 00 00 00 01 00 0b 2f 
34 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 40 70 00 00 00 
00 00 00"));
+    amf::Buffer &buf14 = http.formatEchoResponse(headers14[1]->getName(), 
*headers14[3]);
+    string head14(reinterpret_cast<const char *>(buf14.reference()));
+    const char *ptr14a = reinterpret_cast<const char 
*>(hex_res14->reference());
+    const char *ptr14b = reinterpret_cast<const char *>(buf14.reference()) + 
head14.size();
+    if (memcmp(ptr14a, ptr14b, AMF0_NUMBER_SIZE) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Number 256)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Number 256)");
+    }
+
+    // Number -256 Request
+    boost::shared_ptr<Buffer> hex_req15(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 35 00 00 00 0e 0a 00 00 00 01 00 c0 70 00 00 00 00 00 00"));
+    vector<boost::shared_ptr<amf::Element> > headers15 = 
http.parseEchoRequest(*hex_req15);
+    if ((strncmp(headers15[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers15[1]->getName(), "/5", 2) == 0)
+        && (headers15[3]->getType() == Element::NUMBER_AMF0)
+        && (headers15[3]->to_number() == -256)) {
+        runtest.pass("HTTP::parseEchoRequest(Number -256)");
+    } else {        
+        runtest.fail("HTTP::parseEchoRequest(Number -256)");
+    }
+    // Number -256 Response
+    boost::shared_ptr<Buffer> hex_res15(new Buffer("00 00 00 00 00 01 00 0b 2f 
35 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 c0 70 00 00 00 
00 00 00"));
+    amf::Buffer &buf15 = http.formatEchoResponse(headers15[1]->getName(), 
*headers15[3]);
+    string head15(reinterpret_cast<const char *>(buf15.reference()));
+    const char *ptr15a = reinterpret_cast<const char 
*>(hex_res15->reference());
+    const char *ptr15b = reinterpret_cast<const char *>(buf15.reference()) + 
head15.size();
+    if (memcmp(ptr15a, ptr15b, hex_res15->allocated()-11) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Number -256)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Number -256)");
+    }
+
+    // Number 65536 Request
+    boost::shared_ptr<Buffer> hex_req16(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 36 00 00 00 0e 0a 00 00 00 01 00 40 f0 00 00 00 00 00 00"));
+    vector<boost::shared_ptr<amf::Element> > headers16 = 
http.parseEchoRequest(*hex_req16);
+    if ((strncmp(headers16[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers16[1]->getName(), "/6", 2) == 0)
+        && (headers16[3]->getType() == Element::NUMBER_AMF0)
+        && (headers16[3]->to_number() == 65536)) {
+        runtest.pass("HTTP::parseEchoRequest(Number 65536)");
+    } else {        
+        runtest.fail("HTTP::parseEchoRequest(Number 65536)");
+    }
+    // Number 65536 Response
+    boost::shared_ptr<Buffer> hex_res16(new Buffer("00 00 00 00 00 01 00 0b 2f 
36 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 40 f0 00 00 00 
00 00 00"));
+    amf::Buffer &buf16 = http.formatEchoResponse(headers16[1]->getName(), 
*headers16[3]);
+    string head16(reinterpret_cast<const char *>(buf16.reference()));
+    const char *ptr16a = reinterpret_cast<const char 
*>(hex_res16->reference());
+    const char *ptr16b = reinterpret_cast<const char *>(buf16.reference()) + 
head16.size();
+    if (memcmp(ptr16a, ptr16b, hex_res16->allocated()-11) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Number 65536)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Number 65536)");
+    }
+
+    // Number -655536 Request
+    boost::shared_ptr<Buffer> hex_req16x(new Buffer("00 00 00 00 00 01 00 04 
65 63 68 6f 00 02 2f 37 00 00 00 0e 0a 00 00 00 01 00 c0 f0 00 00 00 00 00 
00"));
+    vector<boost::shared_ptr<amf::Element> > headers16x = 
http.parseEchoRequest(*hex_req16x);
+    if ((strncmp(headers16x[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers16x[1]->getName(), "/7", 2) == 0)
+        && (headers16x[3]->getType() == Element::NUMBER_AMF0)
+        && (headers16x[3]->to_number() == -65536)) {
+        runtest.pass("HTTP::parseEchoRequest(Number -65536)");
+    } else {        
+        runtest.fail("HTTP::parseEchoRequest(Number -65536)");
+    }
+    // Number -655536 Response
+    boost::shared_ptr<Buffer> hex_res17(new Buffer("00 00 00 00 00 01 00 0b 2f 
37 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 c0 f0 00 00 00 
00 00 00"));
+    amf::Buffer &buf17 = http.formatEchoResponse(headers16x[1]->getName(), 
*headers16x[3]);
+    string head17(reinterpret_cast<const char *>(buf17.reference()));
+    const char *ptr17a = reinterpret_cast<const char 
*>(hex_res17->reference());
+    const char *ptr17b = reinterpret_cast<const char *>(buf17.reference()) + 
head17.size();
+    if (memcmp(ptr17a, ptr17b, hex_res17->allocated()-11) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Number -65536)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Number -65536)");
+    }
+
+    // Number 0 Request
+    boost::shared_ptr<Buffer> hex_req18(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 38 00 00 00 0e 0a 00 00 00 01 00 00 00 00 00 00 00 00 00"));
+    vector<boost::shared_ptr<amf::Element> > headers18 = 
http.parseEchoRequest(*hex_req18);
+    if ((strncmp(headers18[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers18[1]->getName(), "/8", 2) == 0)
+        && (headers18[3]->getType() == Element::NUMBER_AMF0)
+        && (headers18[3]->to_number() == 0)) {
+        runtest.pass("HTTP::parseEchoRequest(Number 0)");
+    } else {        
+        runtest.fail("HTTP::parseEchoRequest(Number 0)");
+    }
+    // Number 0 Response
+    boost::shared_ptr<Buffer> hex_res18(new Buffer("00 00 00 00 00 01 00 0b 2f 
38 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 00 00 00 00 00 
00 00 00"));
+    amf::Buffer &buf18 = http.formatEchoResponse(headers18[1]->getName(), 
*headers18[3]);
+    string head18(reinterpret_cast<const char *>(buf18.reference()));
+    const char *ptr18a = reinterpret_cast<const char 
*>(hex_res18->reference());
+    const char *ptr18b = reinterpret_cast<const char *>(buf18.reference()) + 
head18.size();
+    if (memcmp(ptr18a, ptr18b, hex_res18->allocated()-11) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Number 0)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Number 0)");
+    }
+
+    // Number 1.5 Request
+    boost::shared_ptr<Buffer> hex_req19(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 39 00 00 00 0e 0a 00 00 00 01 00 3f f8 00 00 00 00 00 00"));
+    vector<boost::shared_ptr<amf::Element> > headers19 = 
http.parseEchoRequest(*hex_req19);
+    if ((strncmp(headers19[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers19[1]->getName(), "/9", 2) == 0)
+        && (headers19[3]->getType() == Element::NUMBER_AMF0)
+        && (headers19[3]->to_number() == 1.5)) {
+        runtest.pass("HTTP::parseEchoRequest(Number 1.5)");
+    } else {        
+        runtest.fail("HTTP::parseEchoRequest(Number 1.5)");
+    }
+    // Number 1.5 Response
+    boost::shared_ptr<Buffer> hex_res19(new Buffer("00 00 00 00 00 01 00 0b 2f 
39 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 3f f8 00 00 00 
00 00 00"));
+    amf::Buffer &buf19 = http.formatEchoResponse(headers19[1]->getName(), 
*headers19[3]);
+    string head19(reinterpret_cast<const char *>(buf19.reference()));
+    const char *ptr19a = reinterpret_cast<const char 
*>(hex_res19->reference());
+    const char *ptr19b = reinterpret_cast<const char *>(buf19.reference()) + 
head19.size();
+    if (memcmp(ptr19a, ptr19b, hex_res19->allocated()-11) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Number 1.5");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Number 1.5");
+    }
+
+    // Number -1.5 Request
+    boost::shared_ptr<Buffer> hex_req20(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 03 2f 31 30 00 00 00 0e 0a 00 00 00 01 00 bf f8 00 00 00 00 00 
00"));
+    vector<boost::shared_ptr<amf::Element> > headers20 = 
http.parseEchoRequest(*hex_req20);
+    if ((strncmp(headers20[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers20[1]->getName(), "/10", 2) == 0)
+        && (headers20[3]->getType() == Element::NUMBER_AMF0)
+        && (headers20[3]->to_number() == -1.5)) {
+        runtest.pass("HTTP::parseEchoRequest(Number -1.5)");
+    } else {        
+        runtest.fail("HTTP::parseEchoRequest(Number -1.5)");
+    }
+    // Number -1.5 Response
+    boost::shared_ptr<Buffer> hex_res20(new Buffer("00 00 00 00 00 01 00 0c 2f 
31 30 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 bf f8 00 00 
00 00 00 00"));
+    amf::Buffer &buf20 = http.formatEchoResponse(headers20[1]->getName(), 
*headers20[3]);
+    string head20(reinterpret_cast<const char *>(buf20.reference()));
+    const char *ptr20a = reinterpret_cast<const char 
*>(hex_res20->reference());
+    const char *ptr20b = reinterpret_cast<const char *>(buf20.reference()) + 
head20.size();
+    if (memcmp(ptr20a, ptr20b, hex_res20->allocated()-11) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Number -1.5");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Number -1.5");
+    }
+
+    // Number NaN Request
+    boost::shared_ptr<Buffer> hex_req21(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 03 2f 31 31 00 00 00 0e 0a 00 00 00 01 00 ff f8 00 00 00 00 00 
00"));
+    vector<boost::shared_ptr<amf::Element> > headers21 = 
http.parseEchoRequest(*hex_req21);
+    if ((strncmp(headers21[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers21[1]->getName(), "/11", 2) == 0)
+        && (headers21[3]->getType() == Element::NUMBER_AMF0)
+        && (isnan(headers21[3]->to_number()))) {
+        runtest.pass("HTTP::parseEchoRequest(Number NaN)");
+    } else {        
+        runtest.fail("HTTP::parseEchoRequest(Number Nan)");
+    }
+    // Number NaN Response
+    boost::shared_ptr<Buffer> hex_res21(new Buffer("00 00 00 00 00 01 00 0c 2f 
31 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 ff f8 00 00 
00 00 00 00"));
+    amf::Buffer &buf21 = http.formatEchoResponse(headers21[1]->getName(), 
*headers21[3]);
+    string head21(reinterpret_cast<const char *>(buf21.reference()));
+    const char *ptr21a = reinterpret_cast<const char 
*>(hex_res21->reference());
+    const char *ptr21b = reinterpret_cast<const char *>(buf21.reference()) + 
head21.size();
+    if (memcmp(ptr21a, ptr21b, hex_res21->allocated()-11) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Number Nan");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Number Nan");
+    }
+
+    // Number -Infinity Request
+    boost::shared_ptr<Buffer> hex_req22(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 03 2f 31 32 00 00 00 0e 0a 00 00 00 01 00 ff f0 00 00 00 00 00 
00"));
+
+    // Number Infinity Request
+    boost::shared_ptr<Buffer> hex_req22x(new Buffer("00 00 00 00 00 01 00 04 
65 63 68 6f 00 03 2f 31 34 00 00 00 0e 0a 00 00 00 01 00 7f ef ff ff ff ff ff 
ff"));
+    vector<boost::shared_ptr<amf::Element> > headers22x = 
http.parseEchoRequest(*hex_req22x);
+    if ((strncmp(headers22x[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers22x[1]->getName(), "/14", 2) == 0)
+        && (headers22x[3]->getType() == Element::NUMBER_AMF0)
+        && (utility::isFinite(headers22x[3]->to_number()))) {
+        runtest.pass("HTTP::parseEchoRequest(Number Infinity)");
+    } else {        
+        runtest.fail("HTTP::parseEchoRequest(Number Infinity)");
+    }
+    // Number Infinity Response
+    boost::shared_ptr<Buffer> hex_res23(new Buffer("00 00 00 00 00 01 00 0c 2f 
31 33 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 7f f0 00 00 
00 00 00 00"));
+#if 0
+    amf::Buffer &buf23 = http.formatEchoResponse(headers22x[1]->getName(), 
*headers22x[3]);
+    string head23(reinterpret_cast<const char *>(buf23.reference()));
+    const char *ptr23a = reinterpret_cast<const char 
*>(hex_res23->reference());
+    const char *ptr23b = reinterpret_cast<const char *>(buf23.reference()) + 
head23.size();
+    if (memcmp(ptr23a, ptr23b, hex_res23->allocated()-11) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Number Infinity)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Number Infinity)");
+    }
+#endif
+    
+    // Number 1.79769313486231e+308 Request
+    boost::shared_ptr<Buffer> hex_req24(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 03 2f 31 35 00 00 00 0e 0a 00 00 00 01 00 00 00 00 00 00 00 00 
01"));
+    // Number 1.79769313486231e+308 Response
+    boost::shared_ptr<Buffer> hex_res24(new Buffer("00 00 00 00 00 01 00 0c 2f 
31 34 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 7f ef ff ff 
ff ff ff ff"));
+
+    // Number 4.940656484124654e-324 Request
+    boost::shared_ptr<Buffer> hex_req25(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 03 2f 31 36 00 00 00 0e 0a 00 00 00 01 00 00 00 00 00 00 00 00 
00"));
+    // Number 4.940656484124654e-324 Response
+    boost::shared_ptr<Buffer> hex_res25(new Buffer("00 00 00 00 00 01 00 0c 2f 
31 35 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 00 00 00 00 
00 00 00 01"));
+
+    // Number 1,2,1,2
+    // Array request
+    boost::shared_ptr<Buffer> hex_req26(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 35 00 00 00 33 0a 00 00 00 01 0a 00 00 00 03 00 3f f0 00 00 
00 00 00 00 00 40 00 00 00 00 00 00 00 0a 00 00 00 02 00 3f f0 00 00 00 00 00 
00 00 40 00 00 00 00 00 00 00"));
+    vector<boost::shared_ptr<amf::Element> > headers26 = 
http.parseEchoRequest(*hex_req26);
+    std::vector<boost::shared_ptr<amf::Element> > props26 = 
headers26[3]->getProperties();
+    std::vector<boost::shared_ptr<amf::Element> > props26a = 
props26[2]->getProperties();
+    if ((strncmp(headers26[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers26[1]->getName(), "/5", 2) == 0)
+        && (headers26[3]->getType() == Element::STRICT_ARRAY_AMF0)
+       && (props26[0]->getType() == Element::NUMBER_AMF0)
+       && (props26[0]->to_number() == 1)
+       && (props26[2]->getType() == Element::STRICT_ARRAY_AMF0)
+       && (props26a[1]->getType() == Element::NUMBER_AMF0)
+       && (props26a[1]->to_number() == 2)
+       ) {
+        runtest.pass("HTTP::parseEchoRequest(Strict Array of Numbers, 3 
items)");
+    } else {        
+        runtest.fail("HTTP::parseEchoRequest(Strict Array of Numbers, 3 
items)");
+    }
+    // Undefined Array response
+    boost::shared_ptr<Buffer> hex_res26(new Buffer("00 00 00 00 00 01 00 0b 2f 
35 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 03 00 
3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 0a 00 00 00 02 00 3f f0 00 
00 00 00 00 00 00 40 00 00 00 00 00 00 00"));
+    amf::Buffer &buf26 = http.formatEchoResponse(headers26[1]->getName(), 
*headers26[3]);
+    string head26(reinterpret_cast<const char *>(buf26.reference()));
+    //    cerr << hexify(hex_res26->reference()+30, amf::AMF0_NUMBER_SIZE, 
false) << endl;
+    const char *ptr26a = reinterpret_cast<const char 
*>(hex_res26->reference());
+    //    cerr << hexify(buf26.reference() + 124, amf::AMF0_NUMBER_SIZE, 
false) << endl;
+    const char *ptr26b = reinterpret_cast<const char *>(buf26.reference()) + 
head26.size();
+    if (memcmp(ptr26a, ptr26b, hex_res26->allocated()-1) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Strict Array of Numbers, 3 
items)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Strict Array of Numbers, 3 
items)");
+    }
+
+    // Number 1,,,,,,,100
+    // Array request
+    boost::shared_ptr<Buffer> hex_req27(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 36 00 00 00 7f 0a 00 00 00 01 0a 00 00 00 65 00 3f f0 00 00 
00 00 00 00 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 
06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 
06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 
06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 00 
40 59 00 00 00 00 00 00"));
+    vector<boost::shared_ptr<amf::Element> > headers27 = 
http.parseEchoRequest(*hex_req27);
+    std::vector<boost::shared_ptr<amf::Element> > props27 = 
headers27[3]->getProperties();
+    if ((strncmp(headers27[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers27[1]->getName(), "/6", 2) == 0)
+        && (headers27[3]->getType() == Element::STRICT_ARRAY_AMF0)
+        && (props27[0]->to_number() == 1)
+        && (props27[1]->getType() == Element::UNDEFINED_AMF0)
+        && (props27[0]->getType() == Element::NUMBER_AMF0)
+        && (props27[0]->to_number() == 1)
+        && (props27[100]->to_number() == 100)
+        ) { // FIXME: add test for array values
+        runtest.pass("HTTP::parseEchoRequest(Strict Array - Number, undefines, 
Number)");
+    } else {        
+        runtest.fail("HTTP::parseEchoRequest(Strict Array - Number, undefines, 
Number)");
+    }
+    // Undefined Array response
+    boost::shared_ptr<Buffer> hex_res27(new Buffer("00 00 00 00 00 01 00 0b 2f 
36 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 08 00 00 00 66 00 
01 30 00 3f f0 00 00 00 00 00 00 00 03 31 30 30 00 40 59 00 00 00 00 00 00 00 
06 6c 65 6e 67 74 68 00 40 59 80 00 00 00 00 00 00 00 09"));
+#if 0
+    amf::Buffer &buf27 = http.formatEchoResponse(headers27[1]->getName(), 
*headers27[3]);
+    string head27(reinterpret_cast<const char *>(buf27.reference()));
+    cerr << hexify(hex_res27->reference()+29, hex_res27->allocated()-29 , 
false) << endl;
+    cerr << hexify(buf27.reference() + 123, buf27.allocated()-123, false) << 
endl;
+    const char *ptr27a = reinterpret_cast<const char 
*>(hex_res27->reference());
+    const char *ptr27b = reinterpret_cast<const char *>(buf27.reference()) + 
head27.size();
+    if (memcmp(ptr27a, ptr27b, hex_res27->allocated()-1) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Strict Array - Number, 
undefines, Number)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Strict Array  - Number, 
undefines, Number)");
+    }
+#endif
+    
+    // Array request
+    boost::shared_ptr<Buffer> hex_req28(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 37 00 00 00 38 0a 00 00 00 01 08 00 00 00 01 00 06 6c 65 6e 
67 74 68 00 3f f0 00 00 00 00 00 00 00 01 30 00 3f f0 00 00 00 00 00 00 00 03 
6f 6e 65 00 3f f0 00 00 00 00 00 00 00 00 09"));
+    vector<boost::shared_ptr<amf::Element> > headers28 = 
http.parseEchoRequest(*hex_req28);
+    std::vector<boost::shared_ptr<amf::Element> > props28 = 
headers28[3]->getProperties();
+    if ((strncmp(headers28[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers28[1]->getName(), "/7", 2) == 0)
+        && (headers28[3]->getType() == Element::ECMA_ARRAY_AMF0)
+        && (props28[0]->getType() == Element::NUMBER_AMF0)
+        && (strcmp(props28[0]->getName(), "length") == 0)
+        && (props28[0]->to_number() == 1)
+        && (props28[2]->getType() == Element::NUMBER_AMF0)
+        && (strcmp(props28[2]->getName(), "one") == 0)
+        && (props28[2]->to_number() == 1)
+        ) {
+        runtest.pass("HTTP::parseEchoRequest(ECMA Array, 2 Numbers)");
+    } else {        
+        runtest.fail("HTTP::parseEchoRequest(ECMA Array, 2 Numbers)");
+    }
+    // Undefined Array response
+    boost::shared_ptr<Buffer> hex_res28(new Buffer("00 00 00 00 00 01 00 0b 2f 
37 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 08 00 00 00 01 00 
03 6f 6e 65 00 3f f0 00 00 00 00 00 00 00 01 30 00 3f f0 00 00 00 00 00 00 00 
06 6c 65 6e 67 74 68 00 3f f0 00 00 00 00 00 00 00 00 09"));
+    amf::Buffer &buf28 = http.formatEchoResponse(headers28[1]->getName(), 
*headers28[3]);
+//     cerr << hexify(hex_res28->reference()+30, hex_res28->allocated()-30, 
false) << endl;
+//     cerr << hexify(buf28.reference() + 124, buf28.allocated() - 124, false) 
<< endl;
+    //    headers28[3]->dump();
+    string head28(reinterpret_cast<const char *>(buf28.reference()));
+    const char *ptr28a = reinterpret_cast<const char 
*>(hex_res28->reference());
+    const char *ptr28b = reinterpret_cast<const char *>(buf28.reference()) + 
head28.size();
+    if (memcmp(ptr28a, ptr28b, hex_res28->allocated()-1) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(ECMA Array, 2 Numbers)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(ECMA Array, 2 Numbers)");
+    }
+
+    // NULL String request, ie.. no data
+    boost::shared_ptr<Buffer> hex_req29(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 31 00 00 00 08 0a 00 00 00 01 02 00 00"));
+    vector<boost::shared_ptr<amf::Element> > headers29 = 
http.parseEchoRequest(*hex_req29);
+    if ((strncmp(headers29[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers29[1]->getName(), "/1", 2) == 0)
+        && (headers29[3]->getType() == Element::STRING_AMF0)
+        && (headers29[3]->to_string() == 0)) {
+        runtest.pass("HTTP::parseEchoRequest(NULL String)");
+    } else {        
+        runtest.fail("HTTP::parseEchoRequest(NULL String)");
+    }
+    // NULL String response
+    boost::shared_ptr<Buffer> hex_res29(new Buffer("00 00 00 00 00 01 00 0b 2f 
31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 02 00 00"));
+#if 0                           // FIXME: why does this core dump ?
+    amf::Buffer &buf29 = http.formatEchoResponse(headers29[1]->getName(), 
*headers29[3]);
+    string head29(reinterpret_cast<const char *>(buf29.reference()));
+    const char *ptr29a = reinterpret_cast<const char 
*>(hex_res29->reference());
+    const char *ptr29b = reinterpret_cast<const char *>(buf29.reference()) + 
head29.size();
+    if (memcmp(ptr29a, ptr29b, hex_res29->allocated()-1) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(NULL String)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(NULL String)");
+    }
+#endif
+    
+    // String request
+    // "Hello world!"
+    boost::shared_ptr<Buffer> hex_req30(new Buffer(" 00 00 00 00 00 01 00 04 
65 63 68 6f 00 02 2f 32 00 00 00 14 0a 00 00 00 01 02 00 0c 48 65 6c 6c 6f 20 
77 6f 72 6c 64 21"));
+    vector<boost::shared_ptr<amf::Element> > headers30 = 
http.parseEchoRequest(*hex_req30);
+    if ((strncmp(headers30[0]->getName(), "echo", 4) == 0)
+        && (strncmp(headers30[1]->getName(), "/2", 2) == 0)
+        && (headers30[3]->getType() == Element::STRING_AMF0)
+        && (strcmp(headers30[3]->to_string(), "Hello world!") == 0)) {
+        runtest.pass("HTTP::parseEchoRequest(Simple String)");
+    } else {        
+        runtest.fail("HTTP::parseEchoRequest(Simple String)");
+    }
+    // String response
+    boost::shared_ptr<Buffer> hex_res30(new Buffer("00 00 00 00 00 01 00 0b 2f 
32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 02 00 0c 48 65 6c 
6c 6f 20 77 6f 72 6c 64 21"));
+    amf::Buffer &buf30 = http.formatEchoResponse(headers30[1]->getName(), 
*headers30[3]);
+    string head30(reinterpret_cast<const char *>(buf30.reference()));
+    const char *ptr30a = reinterpret_cast<const char 
*>(hex_res30->reference());
+    const char *ptr30b = reinterpret_cast<const char *>(buf30.reference()) + 
head30.size();
+    if (memcmp(ptr30a, ptr30b, hex_res30->allocated()-1) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Simple String)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Simple String)");
+    }
+    
+    // Array of Strings request
+    // test1,test2,test3,test4
+    boost::shared_ptr<Buffer> hex_req31(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 33 00 00 00 2a 0a 00 00 00 01 0a 00 00 00 04 02 00 05 74 65 
73 74 31 02 00 05 74 65 73 74 32 02 00 05 74 65 73 74 33 02 00 05 74 65 73 74 
34"));
+    vector<boost::shared_ptr<amf::Element> > headers31 = 
http.parseEchoRequest(*hex_req31);
+    if (headers31.size() == 0) {
+        runtest.unresolved("HTTP::parseEchoRequest(Simple String Array)");
+    } else {
+
+        std::vector<boost::shared_ptr<amf::Element> > props31 = 
headers31[3]->getProperties();
+        if ((strncmp(headers31[0]->getName(), "echo", 4) == 0)
+            && (strncmp(headers31[1]->getName(), "/3", 2) == 0)
+            && (headers31[3]->getType() == Element::STRICT_ARRAY_AMF0)
+            && (strcmp(props31[0]->to_string(), "test1") == 0)
+            && (strcmp(props31[1]->to_string(), "test2") == 0)
+            && (strcmp(props31[2]->to_string(), "test3") == 0)
+            && (strcmp(props31[3]->to_string(), "test4") == 0)
+            ) {
+            runtest.pass("HTTP::parseEchoRequest(Simple String Array)");
+        } else {        
+            runtest.fail("HTTP::parseEchoRequest(Simple String Array)");
+        }
+    }
+    
+    // Array of Strings response
+    boost::shared_ptr<Buffer> hex_res31(new Buffer("00 00 00 00 00 01 00 0b 2f 
33 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 04 02 
00 05 74 65 73 74 31 02 00 05 74 65 73 74 32 02 00 05 74 65 73 74 33 02 00 05 
74 65 73 74 34"));
+    amf::Buffer &buf31 = http.formatEchoResponse(headers31[1]->getName(), 
*headers31[3]);
+    string head31(reinterpret_cast<const char *>(buf31.reference()));
+    const char *ptr31a = reinterpret_cast<const char 
*>(hex_res31->reference());
+    const char *ptr31b = reinterpret_cast<const char *>(buf31.reference()) + 
head31.size();
+    if (memcmp(ptr31a, ptr31b, hex_res31->allocated()-1) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(Simple String Array)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(Simple String Array)");
+    }
+
+    // Custom class Request
+    // [object EchoClass]                    [object.Object]
+    boost::shared_ptr<Buffer> hex_req40(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 31 00 00 00 26 0a 00 00 00 01 03 00 05 61 74 74 72 32 00 3f 
f0 00 00 00 00 00 00 00 05 61 74 74 72 31 02 00 03 6f 6e 65 00 00 09"));
+    vector<boost::shared_ptr<amf::Element> > headers40 = 
http.parseEchoRequest(*hex_req40);
+    if (headers40[3] == 0) {
+        runtest.unresolved("HTTP::parseEchoRequest(object CustomClass)");
+    } else {
+        std::vector<boost::shared_ptr<amf::Element> > props40 = 
headers40[3]->getProperties();
+        if ((strncmp(headers40[0]->getName(), "echo", 4) == 0)
+            && (strncmp(headers40[1]->getName(), "/1", 2) == 0)
+            && (headers40[3]->getType() == Element::OBJECT_AMF0)
+            && (strcmp(props40[0]->getName(), "attr2") == 0)
+            && (props40[0]->to_number() == 1)
+            && (strcmp(props40[1]->getName(), "attr1") == 0)
+            && (strcmp(props40[1]->to_string(), "one") == 0)) {
+            runtest.pass("HTTP::parseEchoRequest(object CustomClass)");
+        } else {        
+            runtest.fail("HTTP::parseEchoRequest(object CustomClass)");
+        }
+    }
+    boost::shared_ptr<Buffer> hex_res40(new Buffer("00 00 00 00 00 01 00 0b 2f 
31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 03 00 05 61 74 74 
72 32 00 3f f0 00 00 00 00 00 00 00 05 61 74 74 72 31 02 00 03 6f 6e 65 00 00 
09"));
+    amf::Buffer &buf40 = http.formatEchoResponse(headers40[1]->getName(), 
*headers40[3]);
+
+    string head40(reinterpret_cast<const char *>(buf40.reference()));
+    const char *ptr40a = reinterpret_cast<const char 
*>(hex_res40->reference());
+    const char *ptr40b = reinterpret_cast<const char *>(buf40.reference()) + 
head40.size();
+    if (memcmp(ptr40a, ptr40b, hex_res40->allocated()-1) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(object CustomClass)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(object CustomClass)");
+    }
+    
+    // [object EchoClass],[object EchoClass] [object.Object],[object.Object]
+    boost::shared_ptr<Buffer> hex_req41(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 32 00 00 00 2e 0a 00 00 00 01 0a 00 00 00 02 03 00 05 61 74 
74 72 32 00 3f f0 00 00 00 00 00 00 00 05 61 74 74 72 31 02 00 03 6f 6e 65 00 
00 09 07 00 01"));
+    vector<boost::shared_ptr<amf::Element> > headers41 = 
http.parseEchoRequest(*hex_req41);
+    if (headers41[3] == 0) {
+        runtest.unresolved("HTTP::parseEchoRequest(object CustomClass Array)");
+    } else {
+        if ((strncmp(headers41[0]->getName(), "echo", 4) == 0)
+            && (strncmp(headers41[1]->getName(), "/2", 2) == 0)
+            && (headers41[3]->getType() == Element::STRICT_ARRAY_AMF0)) {
+            runtest.pass("HTTP::parseEchoRequest(object CustomClass Array)");
+        } else {        
+            runtest.fail("HTTP::parseEchoRequest(object CustomClass Array)");
+        }
+    }
+    boost::shared_ptr<Buffer> hex_res41(new Buffer("00 00 00 00 00 01 00 0b 2f 
32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 02 03 
00 05 61 74 74 72 32 00 3f f0 00 00 00 00 00 00 00 05 61 74 74 72 31 02 00 03 
6f 6e 65 00 00 09 07 00 01"));
+    amf::Buffer &buf41 = http.formatEchoResponse(headers41[1]->getName(), 
*headers41[3]);
+    string head41(reinterpret_cast<const char *>(buf41.reference()));
+    const char *ptr41a = reinterpret_cast<const char 
*>(hex_res41->reference());
+    const char *ptr41b = reinterpret_cast<const char *>(buf41.reference()) + 
head41.size();
+    if (memcmp(ptr41a, ptr41b, hex_res41->allocated()-4) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(object CustomClass Array)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(object CustomClass Array)");
+    }
+
+    // Remote Class
+    // [object RemoteClass]                      [object RemoteClass]
+    boost::shared_ptr<Buffer> hex_req42(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 31 00 00 00 59 0a 00 00 00 01 10 00 27 6f 72 67 2e 72 65 64 
35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 
65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 32 00 40 00 00 00 00 00 00 
00 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 03 6f 6e 65 00 00 09"));
+    vector<boost::shared_ptr<amf::Element> > headers42 = 
http.parseEchoRequest(*hex_req42);
+    if (headers42[3] == 0) {
+        runtest.unresolved("HTTP::parseEchoRequest(Remote Class)");
+    } else {    
+        if ((strncmp(headers42[0]->getName(), "echo", 4) == 0)
+            && (strncmp(headers42[1]->getName(), "/1", 2) == 0)
+            && (headers42[3]->getType() == Element::TYPED_OBJECT_AMF0)) {
+            runtest.pass("HTTP::parseEchoRequest(object RemoteClass)");
+        } else {        
+            runtest.fail("HTTP::parseEchoRequest(object RemoteClass)");
+        }
+    }
+
+    boost::shared_ptr<Buffer> hex_res42(new Buffer("00 00 00 00 00 01 00 0b 2f 
31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 10 00 27 6f 72 67 
2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 
65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 03 6f 
6e 65 00 0a 61 74 74 72 69 62 75 74 65 32 00 40 00 00 00 00 00 00 00 00 00 
09"));
+    amf::Buffer &buf42 = http.formatEchoResponse(headers42[1]->getName(), 
*headers42[3]);
+    string head42(reinterpret_cast<const char *>(buf42.reference()));
+    const char *ptr42a = reinterpret_cast<const char 
*>(hex_res42->reference());
+    const char *ptr42b = reinterpret_cast<const char *>(buf42.reference()) + 
head42.size();
+    if (memcmp(ptr42a, ptr42b, hex_res42->allocated()-1) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(object RemoteClass)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(object RemoteClass)");
+    }
+    
+    // An array of RemoteClass objects
+    // org.red5.server.webapp.echo.RemoteClass
+    // [object RemoteClass],[object RemoteClass] [object RemoteClass],[object 
RemoteClass]
+    boost::shared_ptr<Buffer> hex_req43(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 32 00 00 00 b2 0a 00 00 00 01 0a 00 00 00 02 10 00 27 6f 72 
67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 
52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 32 00 3f f0 
00 00 00 00 00 00 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 03 6f 6e 65 00 00 
09 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 
2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 
74 65 32 00 40 00 00 00 00 00 00 00 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 
03 74 77 6f 00 00 09"));
+    vector<boost::shared_ptr<amf::Element> > headers43 = 
http.parseEchoRequest(*hex_req43);
+    if (headers43[3] == 0) {
+        runtest.unresolved("HTTP::parseEchoRequest(object RemoteClass Array, 2 
items)");
+    } else {
+       //      headers43[3]->dump();
+       std::vector<boost::shared_ptr<amf::Element> > props43 = 
headers43[3]->getProperties();
+       std::vector<boost::shared_ptr<amf::Element> > props43a = 
props43[0]->getProperties();
+       std::vector<boost::shared_ptr<amf::Element> > props43b = 
props43[1]->getProperties();
+       //      props43[1]->dump();
+        if ((strncmp(headers43[0]->getName(), "echo", 4) == 0)
+            && (strncmp(headers43[1]->getName(), "/2", 2) == 0)
+            && (headers43[3]->getType() == Element::STRICT_ARRAY_AMF0)
+           && (props43[0]->getType() == Element::TYPED_OBJECT_AMF0)
+           && (props43a[0]->getType() == Element::NUMBER_AMF0)
+           && (props43[1]->getType() == Element::TYPED_OBJECT_AMF0)
+           && (props43a[1]->getType() == Element::STRING_AMF0)
+            && (strncmp(props43a[0]->getName(), "attribute2", 10) == 0)
+            && (props43a[0]->to_number() == 1)
+            && (strncmp(props43a[1]->getName(), "attribute1", 10) == 0)
+            && (strncmp(props43a[1]->to_string(), "one", 3) == 0)
+            && (strncmp(props43b[0]->getName(), "attribute2", 10) == 0)
+            && (props43b[0]->to_number() == 2)
+            && (strncmp(props43b[1]->getName(), "attribute1", 10) == 0)
+            && (strncmp(props43b[1]->to_string(), "two", 3) == 0)
+           ) {
+            runtest.pass("HTTP::parseEchoRequest(object RemoteClass Array, 2 
items)");
+        } else {        
+            runtest.fail("HTTP::parseEchoRequest(object RemoteClass Array, 2 
items)");
+        }
+    }
+    boost::shared_ptr<Buffer> hex_res43(new Buffer("00 00 00 00 00 01 00 0b 2f 
32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 02 10 
00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 
63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 
31 02 00 03 6f 6e 65 00 0a 61 74 74 72 69 62 75 74 65 32 00 3f f0 00 00 00 00 
00 00 00 00 09 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 
62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 
72 69 62 75 74 65 31 02 00 03 74 77 6f 00 0a 61 74 74 72 69 62 75 74 65 32 00 
40 00 00 00 00 00 00 00 00 00 09"));
+    amf::Buffer &buf43 = http.formatEchoResponse(headers43[1]->getName(), 
*headers43[3]);
+    std::vector<boost::shared_ptr<amf::Element> > props43 = 
headers43[3]->getProperties();
+    //    std::vector<boost::shared_ptr<amf::Element> > props43a = 
props43[0]->getProperties();
+    //    headers43[3]->dump();
+    //    props43[0]->dump();
+//     cerr << hexify(hex_res43->reference()+29, hex_res43->allocated()-29 , 
false) << endl;
+//     cerr << hexify(buf43.reference(), buf43.allocated(), true) << endl;
+//     cerr << hexify(buf43.reference() + 124, buf43.allocated()-124, false) 
<< endl;
+    string head43(reinterpret_cast<const char *>(buf43.reference()));
+    const char *ptr43a = reinterpret_cast<const char 
*>(hex_res43->reference());
+    const char *ptr43b = reinterpret_cast<const char *>(buf43.reference()) + 
head43.size();
+    if (memcmp(ptr43a, ptr43b, hex_res43->allocated()-4) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(object RemoteClass Array, 2 
items)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(object RemoteClass Array, 2 
items)");
+    }
+
+    // [object RemoteClass]                      [object RemoteClass]
+    boost::shared_ptr<Buffer> hex_req44(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 33 00 00 00 5b 0a 00 00 00 01 10 00 27 6f 72 67 2e 72 65 64 
35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 
65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 32 00 41 d2 65 80 b4 80 00 
00 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 05 74 68 72 65 65 00 00 09"));
+    vector<boost::shared_ptr<amf::Element> > headers44 = 
http.parseEchoRequest(*hex_req44);
+    if (headers44[3] == 0) {
+        runtest.unresolved("HTTP::parseEchoRequest(object RemoteClass Array)");
+    } else {
+        if ((strncmp(headers44[0]->getName(), "echo", 4) == 0)
+            && (strncmp(headers44[1]->getName(), "/3", 2) == 0)
+            && (headers44[3]->getType() == Element::TYPED_OBJECT_AMF0)) {
+            runtest.pass("HTTP::parseEchoRequest(object RemoteClass Array, 2 
items)");
+        } else {        
+            runtest.fail("HTTP::parseEchoRequest(object RemoteClass Array, 2 
items)");
+        }
+    }
+    boost::shared_ptr<Buffer> hex_res44(new Buffer("00 00 00 00 00 01 00 0b 2f 
33 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 10 00 27 6f 72 67 
2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 
65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 05 74 
68 72 65 65 00 0a 61 74 74 72 69 62 75 74 65 32 00 41 d2 65 80 b4 80 00 00 00 
00 09"));
+    amf::Buffer &buf44 = http.formatEchoResponse(headers44[1]->getName(), 
*headers44[3]);
+    string head44(reinterpret_cast<const char *>(buf44.reference()));
+    const char *ptr44a = reinterpret_cast<const char 
*>(hex_res44->reference());
+    const char *ptr44b = reinterpret_cast<const char *>(buf44.reference()) + 
head44.size();
+    if (memcmp(ptr44a, ptr44b, hex_res44->allocated()-1) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(object RemoteClass)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(object RemoteClass)");
+    }
+    
+    // [object RemoteClass]                      [object RemoteClass]
+    boost::shared_ptr<Buffer> hex_req45(new Buffer("00 00 00 00 00 01 00 04 65 
63 68 6f 00 02 2f 34 00 00 00 5a 0a 00 00 00 01 10 00 27 6f 72 67 2e 72 65 64 
35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 
65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 32 00 42 71 3f 8f 4d 00 00 
00 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 04 66 6f 75 72 00 00 09"));
+    vector<boost::shared_ptr<amf::Element> > headers45 = 
http.parseEchoRequest(*hex_req45);
+    if (headers45[3] == 0) {
+        runtest.unresolved("HTTP::parseEchoRequest(object RemoteClass Array)");
+    } else {
+       std::vector<boost::shared_ptr<amf::Element> > props45 = 
headers45[3]->getProperties();
+        if ((strncmp(headers45[0]->getName(), "echo", 4) == 0)
+            && (strncmp(headers45[1]->getName(), "/4", 2) == 0)
+            && (headers45[3]->getType() == Element::TYPED_OBJECT_AMF0)
+            && (strcmp(headers45[3]->getName(), 
"org.red5.server.webapp.echo.RemoteClass") == 0)
+           && (props45[0]->getType() == Element::NUMBER_AMF0)
+            && (strncmp(props45[0]->getName(), "attribute2", 10) == 0)
+           && (props45[1]->getType() == Element::STRING_AMF0)
+            && (strncmp(props45[1]->getName(), "attribute1", 10) == 0)
+            && (strncmp(props45[1]->to_string(), "four", 4) == 0)
+            ) {
+            runtest.pass("HTTP::parseEchoRequest(object RemoteClass)");
+        } else {        
+            runtest.fail("HTTP::parseEchoRequest(object RemoteClass)");
+        }
+    }
+
+    boost::shared_ptr<Buffer> hex_res45(new Buffer("00 00 00 00 00 01 00 0b 2f 
34 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 10 00 27 6f 72 67 
2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 
65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 04 66 
6f 75 72 00 0a 61 74 74 72 69 62 75 74 65 32 00 c1 9c 2c c0 00 00 00 00 00 00 
09"));
+    amf::Buffer &buf45 = http.formatEchoResponse(headers45[1]->getName(), 
*headers45[3]);
+    string head45(reinterpret_cast<const char *>(buf45.reference()));
+    const char *ptr45a = reinterpret_cast<const char 
*>(hex_res45->reference());
+    const char *ptr45b = reinterpret_cast<const char *>(buf45.reference()) + 
head45.size();
+//     cerr << hexify(hex_res45->reference()+29, hex_res45->allocated()-29 , 
false) << endl;
+//     cerr << hexify(buf45.reference()+124, buf45.allocated()-124, true) << 
endl;
+//     cerr << hexify(buf45.reference()+123, buf45.allocated()-123, false) << 
endl;
+    if (memcmp(ptr45a, ptr45b, hex_res45->allocated()-11) == 0) {
+        runtest.pass("HTTP::formatEchoResponse(object RemoteClass)");
+    } else {
+        runtest.fail("HTTP::formatEchoResponse(object RemoteClass)");
+    }
+    
+    // String test with 40000 characters
+    // String test with 70000 characters
+    // String test with 1000000 characters
+//boost::shared_ptr<Buffer> hex1(new Buffer("00 00 00 00 00 01 00 04 65 63 68 
6f 00 02 2f 34 00 00 9c 48 0a 00 00 00 01 02 9c 40 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35"));
+//boost::shared_ptr<Buffer> hex1(new Buffer("36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39"));
+//boost::shared_ptr<Buffer> hex1(new Buffer("30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39"));
+
+//boost::shared_ptr<Buffer> hex1(new Buffer("00 00 00 00 00 01 00 0b 2f 34 2f 
6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 02 9c 40 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34"));
+//boost::shared_ptr<Buffer> hex1(new Buffer("35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 
30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 
36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 
32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 
38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 
34 35 36 37 38 39 30 31 32 33"));
+//boost::shared_ptr<Buffer> hex1(new Buffer("34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 
35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 
37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 
33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 
39"));
 }
 
 static void

=== modified file 'utilities/flvdumper.cpp'
--- a/utilities/flvdumper.cpp   2008-10-25 17:25:58 +0000
+++ b/utilities/flvdumper.cpp   2008-12-20 17:11:55 +0000
@@ -27,6 +27,13 @@
 #include <string>
 #include <vector>
 #include <sys/stat.h>
+#if !defined(HAVE_WINSOCK_H) || defined(__OS2__)
+# include <sys/types.h>
+# include <arpa/inet.h>
+#else
+# include <windows.h>
+# include <io.h>
+#endif
 
 #ifdef ENABLE_NLS
 # include <locale>
@@ -172,8 +179,8 @@
     Flv flv; 
     struct stat st;
 
-    Network::byte_t *buf = 0;
-    Network::byte_t *ptr = 0;
+    boost::uint8_t *buf = 0;
+    boost::uint8_t *ptr = 0;
 //    boost::shared_ptr<Flv::flv_header_t> head;
     Flv::previous_size_t   previous = 0;
     boost::shared_ptr<Flv::flv_tag_t> tag;


reply via email to

[Prev in Thread] Current Thread [Next in Thread]