Rev 5: Basic multi level writer tests. in http://people.ubuntu.com/~robertc/baz2.0/plugins/index2/trunk
Robert Collins
robertc at robertcollins.net
Tue Jul 1 03:33:05 BST 2008
At http://people.ubuntu.com/~robertc/baz2.0/plugins/index2/trunk
------------------------------------------------------------
revno: 5
revision-id: robertc at robertcollins.net-20080701023304-a01ibps9ycjkhzqj
parent: robertc at robertcollins.net-20080630234537-5o71tqw764pyu2pc
committer: Robert Collins <robertc at robertcollins.net>
branch nick: trunk
timestamp: Tue 2008-07-01 12:33:04 +1000
message:
Basic multi level writer tests.
modified:
btree_index.py index.py-20080624222253-p0x5f92uyh5hw734-7
tests/test_btree_index.py test_index.py-20080624222253-p0x5f92uyh5hw734-13
=== modified file 'btree_index.py'
--- a/btree_index.py 2008-06-30 23:45:37 +0000
+++ b/btree_index.py 2008-07-01 02:33:04 +0000
@@ -20,7 +20,7 @@
import tempfile
import zlib
-from bzrlib import index
+from bzrlib import index, osutils
from bzrlib.index import _OPTION_NODE_REFS, _OPTION_KEY_ELEMENTS, _OPTION_LEN
from bzrlib.plugins.index2 import errors, chunk_writer
@@ -28,7 +28,23 @@
_BTSIGNATURE = "B+Tree Graph Index 1\n"
_OPTION_ROW_LENGTHS = "row_lengths="
_LEAF_FLAG = "type=leaf\n"
-
+_INTERNAL_FLAG = "type=internal\n"
+_INTERNAL_OFFSET = "offset="
+
+
+class _BuilderRow(object):
+ """The stored state accumulated while writing out a row in the index.
+
+ :ivar spool: A temporary file used to accumulate nodes for this row
+ in the tree.
+ :ivar nodes: The count of nodes emitted so far.
+ """
+
+ def __init__(self):
+ """Create a _BuilderRow."""
+ self.nodes = 0
+ self.spool = tempfile.TemporaryFile()
+ self.writer = None
class BTreeBuilder(index.GraphIndexBuilder):
@@ -60,7 +76,9 @@
"""
def finish(self):
- working = tempfile.TemporaryFile()
+ # The index rows - rows[0] is the root, rows[1] is the layer under it
+ # etc.
+ self.rows = []
# forward sorted by key. In future we may consider topological sorting,
# at the cost of table scans for direct lookup, or a second index for
# direct lookup
@@ -72,38 +90,79 @@
# A stack with the current open node for each row length
self.row_nodes = []
if len(nodes):
- self.rows = 1
- # write a leaf node, padded to 4096 (4K) bytes
- self.page_count = 0
- def finish_node():
- byte_lines, next_node_line = writer.finish()
- if self.row_lengths[-1] == 0:
+ # Loop over all nodes adding them to the bottom row
+ # (self.rows[-1]). When we finish a chunk in a row,
+ # propogate the key that didn't fit (comes after the chunk) to the
+ # row above, transitively.
+ self.rows.append(_BuilderRow())
+ def finish_node(row):
+ byte_lines, next_node_line = row.writer.finish()
+ if row.nodes == 0:
# padded note:
- working.write("\x00" * 100)
- working.writelines(byte_lines)
- self.page_count += 1
- self.row_lengths[-1] += 1
+ row.spool.write("\x00" * 100)
+ row.spool.writelines(byte_lines)
+ if row.spool.tell() % 4096 != 0:
+ raise AssertionError("incorrect node length")
+ row.nodes += 1
+ row.writer = None
+
+ def add_key(string_key, key_line):
+ """Add a key to the current chunk.
+
+ :param string_key: The key to add.
+ :param key_line: The fully serialised key and value.
+ """
+ if self.rows[-1].writer is None:
+ # opening a new leaf chunk;
+ for pos, internal_row in enumerate(self.rows[:-1]):
+ # flesh out any internal nodes that are needed to
+ # preserve the high of the tree
+ if internal_row.writer is None:
+ length = 4096
+ if internal_row.nodes == 0:
+ length -= 100 # padded
+ internal_row.writer = chunk_writer.ChunkWriter(
+ length)
+ internal_row.writer.write(_INTERNAL_FLAG)
+ internal_row.writer.write(_INTERNAL_OFFSET +
+ str(self.rows[pos + 1].nodes - 1) + "\n")
+ # add a new leaf
+ length = 4096
+ if self.rows[-1].nodes == 0:
+ length -= 100 # padded
+ self.rows[-1].writer = chunk_writer.ChunkWriter(length)
+ self.rows[-1].writer.write(_LEAF_FLAG)
+ if self.rows[-1].writer.write(line):
+ # this key did not fit in the node:
+ finish_node(self.rows[-1])
+ key_line = string_key + "\n"
+ new_row = True
+ for row in reversed(self.rows[:-1]):
+ # Mark the end of this node in the node above. If it
+ # doesn't fit then flush the node out and mark the end
+ # point of that internal node in the node above.
+ if row.writer.write(key_line):
+ finish_node(row)
+ else:
+ # We've found a node that can handle the pointer.
+ new_row = False
+ break
+ # If we reached the current root without being able to mark the
+ # division point, then we need a new root:
+ if new_row:
+ # We need a new row
+ new_row = _BuilderRow()
+ self.rows.insert(0, new_row)
+ new_row.writer = chunk_writer.ChunkWriter(3996)
+ new_row.writer.write(_INTERNAL_FLAG)
+ new_row.writer.write(_INTERNAL_OFFSET +
+ str(self.rows[1].nodes - 1) + "\n")
+ new_row.writer.write(key_line)
+ add_key(string_key, key_line)
for key, (absent, references, value) in nodes:
if absent:
continue
- if len(self.row_nodes) != self.rows:
- # seed some nodes
- for depth in range(self.rows - len(self.row_nodes) - 1):
- # add internal node
- assert False
- if len(self.row_lengths) != self.rows:
- # we have bumped up a row
- self.row_lengths.insert(0, 0)
- # Time for a new node
- if self.row_lengths[0] == 0:
- # Pad the node, it might end up being the root
- writer = chunk_writer.ChunkWriter(3996)
- else:
- writer = chunk_writer.ChunkWriter(4096)
- self.row_nodes.append(writer)
- writer.write(_LEAF_FLAG)
-
key_count += 1
flattened_references = []
for ref_list in references:
@@ -114,31 +173,33 @@
string_key = '\x00'.join(key)
line = ("%s\x00%s\x00%s\n" % (string_key,
'\t'.join(flattened_references), value))
- if writer.write(line):
- # new node time
- assert False
- finish_node()
- working.flush()
+ add_key(string_key, line)
+ for row in reversed(self.rows):
+ finish_node(row)
result = tempfile.TemporaryFile()
lines = [_BTSIGNATURE]
lines.append(_OPTION_NODE_REFS + str(self.reference_lists) + '\n')
lines.append(_OPTION_KEY_ELEMENTS + str(self._key_length) + '\n')
lines.append(_OPTION_LEN + str(key_count) + '\n')
- lines.append(_OPTION_ROW_LENGTHS + ','.join(map(str, self.row_lengths)) + '\n')
- # write the rows out:
+ row_lengths = [row.nodes for row in self.rows]
+ lines.append(_OPTION_ROW_LENGTHS + ','.join(map(str, row_lengths)) + '\n')
result.writelines(lines)
- reserved = 100 # reserved space
position = sum(map(len, lines))
- working.seek(0)
- # copy nodes to the finalised file.
- node = working.read(4096)
- while node:
- node = node[reserved:]
- result.write(node)
+ # write the rows out:
+ for row in self.rows:
+ reserved = 100 # reserved space for first node
+ row.spool.flush()
+ row.spool.seek(0)
+ # copy nodes to the finalised file.
+ # Special case the first node as it may be prefixed
+ node = row.spool.read(4096)
+ result.write(node[reserved:])
result.write("\x00" * (reserved - position))
- node = working.read(4096)
- position = 0
- reserved = 0
+ position = 0 # Only the root row actually has an offset
+ copied_len = osutils.pumpfile(row.spool, result)
+ if copied_len != (row.nodes - 1) * 4096:
+ import pdb;pdb.set_trace()
+ raise AssertionError("Not enough data copied")
result.flush()
result.seek(0)
return result
=== modified file 'tests/test_btree_index.py'
--- a/tests/test_btree_index.py 2008-06-30 22:10:08 +0000
+++ b/tests/test_btree_index.py 2008-07-01 02:33:04 +0000
@@ -126,52 +126,557 @@
)
self.assertEqual(expected_node, node_bytes)
- def _test_2_leaves_1_0(self):
+ def test_2_leaves_1_0(self):
builder = btree_index.BTreeBuilder(key_elements=1, reference_lists=0)
- nodes = self.make_nodes(700, 1, 0)
+ nodes = self.make_nodes(500, 1, 0)
for node in nodes:
builder.add_node(*node)
content = builder.finish().read()
- self.assertEqual(4096, len(content))
+ self.assertEqual(4096*3, len(content))
self.assertEqual(
- "B+Tree Graph Index 1\nnode_ref_lists=0\nkey_elements=1\nlen=700\n"
+ "B+Tree Graph Index 1\nnode_ref_lists=0\nkey_elements=1\nlen=500\n"
"row_lengths=1,2\n",
- content[:61])
- node_content = content[61:]
- node_bytes = zlib.decompress(node_content)
- expected_node = ("type=leaf\n"
+ content[:77])
+ root = content[77:4096]
+ leaf1 = content[4096:8192]
+ leaf2 = content[8192:]
+ root_bytes = zlib.decompress(root)
+ expected_root = (
+ "type=internal\n"
+ "offset=0\n"
+ "348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348\n"
+ )
+ self.assertEqual(expected_root, root_bytes)
+ leaf1_bytes = zlib.decompress(leaf1)
+ expected_leaf1 = (
+ "type=leaf\n"
"0000000000000000000000000000000000000000\x00\x00value:0\n"
+ "100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100\x00\x00value:100\n"
+ "10101010101010101010101010101010101010101010101010101010101010101010101010101010\x00\x00value:10\n"
+ "101101101101101101101101101101101101101101101101101101101101101101101101101101101101101101101101101101101101101101101101\x00\x00value:101\n"
+ "102102102102102102102102102102102102102102102102102102102102102102102102102102102102102102102102102102102102102102102102\x00\x00value:102\n"
+ "103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103\x00\x00value:103\n"
+ "104104104104104104104104104104104104104104104104104104104104104104104104104104104104104104104104104104104104104104104104\x00\x00value:104\n"
+ "105105105105105105105105105105105105105105105105105105105105105105105105105105105105105105105105105105105105105105105105\x00\x00value:105\n"
+ "106106106106106106106106106106106106106106106106106106106106106106106106106106106106106106106106106106106106106106106106\x00\x00value:106\n"
+ "107107107107107107107107107107107107107107107107107107107107107107107107107107107107107107107107107107107107107107107107\x00\x00value:107\n"
+ "108108108108108108108108108108108108108108108108108108108108108108108108108108108108108108108108108108108108108108108108\x00\x00value:108\n"
+ "109109109109109109109109109109109109109109109109109109109109109109109109109109109109109109109109109109109109109109109109\x00\x00value:109\n"
+ "110110110110110110110110110110110110110110110110110110110110110110110110110110110110110110110110110110110110110110110110\x00\x00value:110\n"
"1111111111111111111111111111111111111111\x00\x00value:1\n"
+ "11111111111111111111111111111111111111111111111111111111111111111111111111111111\x00\x00value:11\n"
+ "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\x00\x00value:111\n"
+ "112112112112112112112112112112112112112112112112112112112112112112112112112112112112112112112112112112112112112112112112\x00\x00value:112\n"
+ "113113113113113113113113113113113113113113113113113113113113113113113113113113113113113113113113113113113113113113113113\x00\x00value:113\n"
+ "114114114114114114114114114114114114114114114114114114114114114114114114114114114114114114114114114114114114114114114114\x00\x00value:114\n"
+ "115115115115115115115115115115115115115115115115115115115115115115115115115115115115115115115115115115115115115115115115\x00\x00value:115\n"
+ "116116116116116116116116116116116116116116116116116116116116116116116116116116116116116116116116116116116116116116116116\x00\x00value:116\n"
+ "117117117117117117117117117117117117117117117117117117117117117117117117117117117117117117117117117117117117117117117117\x00\x00value:117\n"
+ "118118118118118118118118118118118118118118118118118118118118118118118118118118118118118118118118118118118118118118118118\x00\x00value:118\n"
+ "119119119119119119119119119119119119119119119119119119119119119119119119119119119119119119119119119119119119119119119119\x00\x00value:119\n"
+ "120120120120120120120120120120120120120120120120120120120120120120120120120120120120120120120120120120120120120120120120\x00\x00value:120\n"
+ "121121121121121121121121121121121121121121121121121121121121121121121121121121121121121121121121121121121121121121121121\x00\x00value:121\n"
+ "12121212121212121212121212121212121212121212121212121212121212121212121212121212\x00\x00value:12\n"
+ "122122122122122122122122122122122122122122122122122122122122122122122122122122122122122122122122122122122122122122122122\x00\x00value:122\n"
+ "123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123\x00\x00value:123\n"
+ "124124124124124124124124124124124124124124124124124124124124124124124124124124124124124124124124124124124124124124124124\x00\x00value:124\n"
+ "125125125125125125125125125125125125125125125125125125125125125125125125125125125125125125125125125125125125125125125125\x00\x00value:125\n"
+ "126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126\x00\x00value:126\n"
+ "127127127127127127127127127127127127127127127127127127127127127127127127127127127127127127127127127127127127127127127127\x00\x00value:127\n"
+ "128128128128128128128128128128128128128128128128128128128128128128128128128128128128128128128128128128128128128128128128\x00\x00value:128\n"
+ "129129129129129129129129129129129129129129129129129129129129129129129129129129129129129129129129129129129129129129129129\x00\x00value:129\n"
+ "130130130130130130130130130130130130130130130130130130130130130130130130130130130130130130130130130130130130130130130130\x00\x00value:130\n"
+ "131131131131131131131131131131131131131131131131131131131131131131131131131131131131131131131131131131131131131131131131\x00\x00value:131\n"
+ "13131313131313131313131313131313131313131313131313131313131313131313131313131313\x00\x00value:13\n"
+ "132132132132132132132132132132132132132132132132132132132132132132132132132132132132132132132132132132132132132132132132\x00\x00value:132\n"
+ "133133133133133133133133133133133133133133133133133133133133133133133133133133133133133133133133133133133133133133133133\x00\x00value:133\n"
+ "134134134134134134134134134134134134134134134134134134134134134134134134134134134134134134134134134134134134134134134134\x00\x00value:134\n"
+ "135135135135135135135135135135135135135135135135135135135135135135135135135135135135135135135135135135135135135135135135\x00\x00value:135\n"
+ "136136136136136136136136136136136136136136136136136136136136136136136136136136136136136136136136136136136136136136136136\x00\x00value:136\n"
+ "137137137137137137137137137137137137137137137137137137137137137137137137137137137137137137137137137137137137137137137137\x00\x00value:137\n"
+ "138138138138138138138138138138138138138138138138138138138138138138138138138138138138138138138138138138138138138138138138\x00\x00value:138\n"
+ "139139139139139139139139139139139139139139139139139139139139139139139139139139139139139139139139139139139139139139139139\x00\x00value:139\n"
+ "140140140140140140140140140140140140140140140140140140140140140140140140140140140140140140140140140140140140140140140140\x00\x00value:140\n"
+ "141141141141141141141141141141141141141141141141141141141141141141141141141141141141141141141141141141141141141141141141\x00\x00value:141\n"
+ "14141414141414141414141414141414141414141414141414141414141414141414141414141414\x00\x00value:14\n"
+ "142142142142142142142142142142142142142142142142142142142142142142142142142142142142142142142142142142142142142142142142\x00\x00value:142\n"
+ "143143143143143143143143143143143143143143143143143143143143143143143143143143143143143143143143143143143143143143143143\x00\x00value:143\n"
+ "144144144144144144144144144144144144144144144144144144144144144144144144144144144144144144144144144144144144144144144144\x00\x00value:144\n"
+ "145145145145145145145145145145145145145145145145145145145145145145145145145145145145145145145145145145145145145145145145\x00\x00value:145\n"
+ "146146146146146146146146146146146146146146146146146146146146146146146146146146146146146146146146146146146146146146146146\x00\x00value:146\n"
+ "147147147147147147147147147147147147147147147147147147147147147147147147147147147147147147147147147147147147147147147147\x00\x00value:147\n"
+ "148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148\x00\x00value:148\n"
+ "149149149149149149149149149149149149149149149149149149149149149149149149149149149149149149149149149149149149149149149149\x00\x00value:149\n"
+ "150150150150150150150150150150150150150150150150150150150150150150150150150150150150150150150150150150150150150150150150\x00\x00value:150\n"
+ "151151151151151151151151151151151151151151151151151151151151151151151151151151151151151151151151151151151151151151151151\x00\x00value:151\n"
+ "15151515151515151515151515151515151515151515151515151515151515151515151515151515\x00\x00value:15\n"
+ "152152152152152152152152152152152152152152152152152152152152152152152152152152152152152152152152152152152152152152152152\x00\x00value:152\n"
+ "153153153153153153153153153153153153153153153153153153153153153153153153153153153153153153153153153153153153153153153153\x00\x00value:153\n"
+ "154154154154154154154154154154154154154154154154154154154154154154154154154154154154154154154154154154154154154154154154\x00\x00value:154\n"
+ "155155155155155155155155155155155155155155155155155155155155155155155155155155155155155155155155155155155155155155155155\x00\x00value:155\n"
+ "156156156156156156156156156156156156156156156156156156156156156156156156156156156156156156156156156156156156156156156156\x00\x00value:156\n"
+ "157157157157157157157157157157157157157157157157157157157157157157157157157157157157157157157157157157157157157157157157\x00\x00value:157\n"
+ "158158158158158158158158158158158158158158158158158158158158158158158158158158158158158158158158158158158158158158158158\x00\x00value:158\n"
+ "159159159159159159159159159159159159159159159159159159159159159159159159159159159159159159159159159159159159159159159159\x00\x00value:159\n"
+ "160160160160160160160160160160160160160160160160160160160160160160160160160160160160160160160160160160160160160160160160\x00\x00value:160\n"
+ "161161161161161161161161161161161161161161161161161161161161161161161161161161161161161161161161161161161161161161161161\x00\x00value:161\n"
+ "16161616161616161616161616161616161616161616161616161616161616161616161616161616\x00\x00value:16\n"
+ "162162162162162162162162162162162162162162162162162162162162162162162162162162162162162162162162162162162162162162162162\x00\x00value:162\n"
+ "163163163163163163163163163163163163163163163163163163163163163163163163163163163163163163163163163163163163163163163163\x00\x00value:163\n"
+ "164164164164164164164164164164164164164164164164164164164164164164164164164164164164164164164164164164164164164164164164\x00\x00value:164\n"
+ "165165165165165165165165165165165165165165165165165165165165165165165165165165165165165165165165165165165165165165165165\x00\x00value:165\n"
+ "166166166166166166166166166166166166166166166166166166166166166166166166166166166166166166166166166166166166166166166166\x00\x00value:166\n"
+ "167167167167167167167167167167167167167167167167167167167167167167167167167167167167167167167167167167167167167167167167\x00\x00value:167\n"
+ "168168168168168168168168168168168168168168168168168168168168168168168168168168168168168168168168168168168168168168168168\x00\x00value:168\n"
+ "169169169169169169169169169169169169169169169169169169169169169169169169169169169169169169169169169169169169169169169169\x00\x00value:169\n"
+ "170170170170170170170170170170170170170170170170170170170170170170170170170170170170170170170170170170170170170170170170\x00\x00value:170\n"
+ "171171171171171171171171171171171171171171171171171171171171171171171171171171171171171171171171171171171171171171171171\x00\x00value:171\n"
+ "17171717171717171717171717171717171717171717171717171717171717171717171717171717\x00\x00value:17\n"
+ "172172172172172172172172172172172172172172172172172172172172172172172172172172172172172172172172172172172172172172172172\x00\x00value:172\n"
+ "173173173173173173173173173173173173173173173173173173173173173173173173173173173173173173173173173173173173173173173173\x00\x00value:173\n"
+ "174174174174174174174174174174174174174174174174174174174174174174174174174174174174174174174174174174174174174174174174\x00\x00value:174\n"
+ "175175175175175175175175175175175175175175175175175175175175175175175175175175175175175175175175175175175175175175175175\x00\x00value:175\n"
+ "176176176176176176176176176176176176176176176176176176176176176176176176176176176176176176176176176176176176176176176176\x00\x00value:176\n"
+ "177177177177177177177177177177177177177177177177177177177177177177177177177177177177177177177177177177177177177177177177\x00\x00value:177\n"
+ "178178178178178178178178178178178178178178178178178178178178178178178178178178178178178178178178178178178178178178178178\x00\x00value:178\n"
+ "179179179179179179179179179179179179179179179179179179179179179179179179179179179179179179179179179179179179179179179179\x00\x00value:179\n"
+ "180180180180180180180180180180180180180180180180180180180180180180180180180180180180180180180180180180180180180180180180\x00\x00value:180\n"
+ "181181181181181181181181181181181181181181181181181181181181181181181181181181181181181181181181181181181181181181181181\x00\x00value:181\n"
+ "18181818181818181818181818181818181818181818181818181818181818181818181818181818\x00\x00value:18\n"
+ "182182182182182182182182182182182182182182182182182182182182182182182182182182182182182182182182182182182182182182182182\x00\x00value:182\n"
+ "183183183183183183183183183183183183183183183183183183183183183183183183183183183183183183183183183183183183183183183183\x00\x00value:183\n"
+ "184184184184184184184184184184184184184184184184184184184184184184184184184184184184184184184184184184184184184184184184\x00\x00value:184\n"
+ "185185185185185185185185185185185185185185185185185185185185185185185185185185185185185185185185185185185185185185185185\x00\x00value:185\n"
+ "186186186186186186186186186186186186186186186186186186186186186186186186186186186186186186186186186186186186186186186186\x00\x00value:186\n"
+ "187187187187187187187187187187187187187187187187187187187187187187187187187187187187187187187187187187187187187187187187\x00\x00value:187\n"
+ "188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188\x00\x00value:188\n"
+ "189189189189189189189189189189189189189189189189189189189189189189189189189189189189189189189189189189189189189189189189\x00\x00value:189\n"
+ "190190190190190190190190190190190190190190190190190190190190190190190190190190190190190190190190190190190190190190190190\x00\x00value:190\n"
+ "191191191191191191191191191191191191191191191191191191191191191191191191191191191191191191191191191191191191191191191191\x00\x00value:191\n"
+ "19191919191919191919191919191919191919191919191919191919191919191919191919191919\x00\x00value:19\n"
+ "192192192192192192192192192192192192192192192192192192192192192192192192192192192192192192192192192192192192192192192192\x00\x00value:192\n"
+ "193193193193193193193193193193193193193193193193193193193193193193193193193193193193193193193193193193193193193193193193\x00\x00value:193\n"
+ "194194194194194194194194194194194194194194194194194194194194194194194194194194194194194194194194194194194194194194194194\x00\x00value:194\n"
+ "195195195195195195195195195195195195195195195195195195195195195195195195195195195195195195195195195195195195195195195195\x00\x00value:195\n"
+ "196196196196196196196196196196196196196196196196196196196196196196196196196196196196196196196196196196196196196196196196\x00\x00value:196\n"
+ "197197197197197197197197197197197197197197197197197197197197197197197197197197197197197197197197197197197197197197197197\x00\x00value:197\n"
+ "198198198198198198198198198198198198198198198198198198198198198198198198198198198198198198198198198198198198198198198198\x00\x00value:198\n"
+ "199199199199199199199199199199199199199199199199199199199199199199199199199199199199199199199199199199199199199199199199\x00\x00value:199\n"
+ "200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200\x00\x00value:200\n"
+ "201201201201201201201201201201201201201201201201201201201201201201201201201201201201201201201201201201201201201201201201\x00\x00value:201\n"
+ "20202020202020202020202020202020202020202020202020202020202020202020202020202020\x00\x00value:20\n"
+ "202202202202202202202202202202202202202202202202202202202202202202202202202202202202202202202202202202202202202202202202\x00\x00value:202\n"
+ "203203203203203203203203203203203203203203203203203203203203203203203203203203203203203203203203203203203203203203203203\x00\x00value:203\n"
+ "204204204204204204204204204204204204204204204204204204204204204204204204204204204204204204204204204204204204204204204204\x00\x00value:204\n"
+ "205205205205205205205205205205205205205205205205205205205205205205205205205205205205205205205205205205205205205205205205\x00\x00value:205\n"
+ "206206206206206206206206206206206206206206206206206206206206206206206206206206206206206206206206206206206206206206206206\x00\x00value:206\n"
+ "207207207207207207207207207207207207207207207207207207207207207207207207207207207207207207207207207207207207207207207207\x00\x00value:207\n"
+ "208208208208208208208208208208208208208208208208208208208208208208208208208208208208208208208208208208208208208208208208\x00\x00value:208\n"
+ "209209209209209209209209209209209209209209209209209209209209209209209209209209209209209209209209209209209209209209209209\x00\x00value:209\n"
+ "210210210210210210210210210210210210210210210210210210210210210210210210210210210210210210210210210210210210210210210210\x00\x00value:210\n"
+ "211211211211211211211211211211211211211211211211211211211211211211211211211211211211211211211211211211211211211211211211\x00\x00value:211\n"
+ "21212121212121212121212121212121212121212121212121212121212121212121212121212121\x00\x00value:21\n"
+ "212212212212212212212212212212212212212212212212212212212212212212212212212212212212212212212212212212212212212212212212\x00\x00value:212\n"
+ "213213213213213213213213213213213213213213213213213213213213213213213213213213213213213213213213213213213213213213213213\x00\x00value:213\n"
+ "214214214214214214214214214214214214214214214214214214214214214214214214214214214214214214214214214214214214214214214214\x00\x00value:214\n"
+ "215215215215215215215215215215215215215215215215215215215215215215215215215215215215215215215215215215215215215215215215\x00\x00value:215\n"
+ "216216216216216216216216216216216216216216216216216216216216216216216216216216216216216216216216216216216216216216216216\x00\x00value:216\n"
+ "217217217217217217217217217217217217217217217217217217217217217217217217217217217217217217217217217217217217217217217217\x00\x00value:217\n"
+ "218218218218218218218218218218218218218218218218218218218218218218218218218218218218218218218218218218218218218218218218\x00\x00value:218\n"
+ "219219219219219219219219219219219219219219219219219219219219219219219219219219219219219219219219219219219219219219219219\x00\x00value:219\n"
+ "220220220220220220220220220220220220220220220220220220220220220220220220220220220220220220220220220220220220220220220220\x00\x00value:220\n"
+ "221221221221221221221221221221221221221221221221221221221221221221221221221221221221221221221221221221221221221221221221\x00\x00value:221\n"
"2222222222222222222222222222222222222222\x00\x00value:2\n"
+ "22222222222222222222222222222222222222222222222222222222222222222222222222222222\x00\x00value:22\n"
+ "222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222\x00\x00value:222\n"
+ "223223223223223223223223223223223223223223223223223223223223223223223223223223223223223223223223223223223223223223223223\x00\x00value:223\n"
+ "224224224224224224224224224224224224224224224224224224224224224224224224224224224224224224224224224224224224224224224224\x00\x00value:224\n"
+ "225225225225225225225225225225225225225225225225225225225225225225225225225225225225225225225225225225225225225225225225\x00\x00value:225\n"
+ "226226226226226226226226226226226226226226226226226226226226226226226226226226226226226226226226226226226226226226226226\x00\x00value:226\n"
+ "227227227227227227227227227227227227227227227227227227227227227227227227227227227227227227227227227227227227227227227227\x00\x00value:227\n"
+ "228228228228228228228228228228228228228228228228228228228228228228228228228228228228228228228228228228228228228228228228\x00\x00value:228\n"
+ "229229229229229229229229229229229229229229229229229229229229229229229229229229229229229229229229229229229229229229229229\x00\x00value:229\n"
+ "230230230230230230230230230230230230230230230230230230230230230230230230230230230230230230230230230230230230230230230230\x00\x00value:230\n"
+ "231231231231231231231231231231231231231231231231231231231231231231231231231231231231231231231231231231231231231231231231\x00\x00value:231\n"
+ "232232232232232232232232232232232232232232232232232232232232232232232232232232232232232232232232232232232232232232232232\x00\x00value:232\n"
+ "23232323232323232323232323232323232323232323232323232323232323232323232323232323\x00\x00value:23\n"
+ "233233233233233233233233233233233233233233233233233233233233233233233233233233233233233233233233233233233233233233233233\x00\x00value:233\n"
+ "234234234234234234234234234234234234234234234234234234234234234234234234234234234234234234234234234234234234234234234234\x00\x00value:234\n"
+ "235235235235235235235235235235235235235235235235235235235235235235235235235235235235235235235235235235235235235235235235\x00\x00value:235\n"
+ "236236236236236236236236236236236236236236236236236236236236236236236236236236236236236236236236236236236236236236236236\x00\x00value:236\n"
+ "237237237237237237237237237237237237237237237237237237237237237237237237237237237237237237237237237237237237237237237237\x00\x00value:237\n"
+ "238238238238238238238238238238238238238238238238238238238238238238238238238238238238238238238238238238238238238238238238\x00\x00value:238\n"
+ "239239239239239239239239239239239239239239239239239239239239239239239239239239239239239239239239239239239239239239239239\x00\x00value:239\n"
+ "240240240240240240240240240240240240240240240240240240240240240240240240240240240240240240240240240240240240240240240240\x00\x00value:240\n"
+ "241241241241241241241241241241241241241241241241241241241241241241241241241241241241241241241241241241241241241241241241\x00\x00value:241\n"
+ "242242242242242242242242242242242242242242242242242242242242242242242242242242242242242242242242242242242242242242242242\x00\x00value:242\n"
+ "24242424242424242424242424242424242424242424242424242424242424242424242424242424\x00\x00value:24\n"
+ "243243243243243243243243243243243243243243243243243243243243243243243243243243243243243243243243243243243243243243243243\x00\x00value:243\n"
+ "244244244244244244244244244244244244244244244244244244244244244244244244244244244244244244244244244244244244244244244244\x00\x00value:244\n"
+ "245245245245245245245245245245245245245245245245245245245245245245245245245245245245245245245245245245245245245245245245\x00\x00value:245\n"
+ "246246246246246246246246246246246246246246246246246246246246246246246246246246246246246246246246246246246246246246246246\x00\x00value:246\n"
+ "247247247247247247247247247247247247247247247247247247247247247247247247247247247247247247247247247247247247247247247247\x00\x00value:247\n"
+ "248248248248248248248248248248248248248248248248248248248248248248248248248248248248248248248248248248248248248248248248\x00\x00value:248\n"
+ "249249249249249249249249249249249249249249249249249249249249249249249249249249249249249249249249249249249249249249249249\x00\x00value:249\n"
+ "250250250250250250250250250250250250250250250250250250250250250250250250250250250250250250250250250250250250250250250250\x00\x00value:250\n"
+ "251251251251251251251251251251251251251251251251251251251251251251251251251251251251251251251251251251251251251251251251\x00\x00value:251\n"
+ "252252252252252252252252252252252252252252252252252252252252252252252252252252252252252252252252252252252252252252252252\x00\x00value:252\n"
+ "25252525252525252525252525252525252525252525252525252525252525252525252525252525\x00\x00value:25\n"
+ "253253253253253253253253253253253253253253253253253253253253253253253253253253253253253253253253253253253253253253253253\x00\x00value:253\n"
+ "254254254254254254254254254254254254254254254254254254254254254254254254254254254254254254254254254254254254254254254254\x00\x00value:254\n"
+ "255255255255255255255255255255255255255255255255255255255255255255255255255255255255255255255255255255255255255255255255\x00\x00value:255\n"
+ "256256256256256256256256256256256256256256256256256256256256256256256256256256256256256256256256256256256256256256256256\x00\x00value:256\n"
+ "257257257257257257257257257257257257257257257257257257257257257257257257257257257257257257257257257257257257257257257257\x00\x00value:257\n"
+ "258258258258258258258258258258258258258258258258258258258258258258258258258258258258258258258258258258258258258258258258\x00\x00value:258\n"
+ "259259259259259259259259259259259259259259259259259259259259259259259259259259259259259259259259259259259259259259259259\x00\x00value:259\n"
+ "260260260260260260260260260260260260260260260260260260260260260260260260260260260260260260260260260260260260260260260260\x00\x00value:260\n"
+ "261261261261261261261261261261261261261261261261261261261261261261261261261261261261261261261261261261261261261261261261\x00\x00value:261\n"
+ "262262262262262262262262262262262262262262262262262262262262262262262262262262262262262262262262262262262262262262262262\x00\x00value:262\n"
+ "26262626262626262626262626262626262626262626262626262626262626262626262626262626\x00\x00value:26\n"
+ "263263263263263263263263263263263263263263263263263263263263263263263263263263263263263263263263263263263263263263263263\x00\x00value:263\n"
+ "264264264264264264264264264264264264264264264264264264264264264264264264264264264264264264264264264264264264264264264264\x00\x00value:264\n"
+ "265265265265265265265265265265265265265265265265265265265265265265265265265265265265265265265265265265265265265265265265\x00\x00value:265\n"
+ "266266266266266266266266266266266266266266266266266266266266266266266266266266266266266266266266266266266266266266266266\x00\x00value:266\n"
+ "267267267267267267267267267267267267267267267267267267267267267267267267267267267267267267267267267267267267267267267267\x00\x00value:267\n"
+ "268268268268268268268268268268268268268268268268268268268268268268268268268268268268268268268268268268268268268268268268\x00\x00value:268\n"
+ "269269269269269269269269269269269269269269269269269269269269269269269269269269269269269269269269269269269269269269269269\x00\x00value:269\n"
+ "270270270270270270270270270270270270270270270270270270270270270270270270270270270270270270270270270270270270270270270270\x00\x00value:270\n"
+ "271271271271271271271271271271271271271271271271271271271271271271271271271271271271271271271271271271271271271271271271\x00\x00value:271\n"
+ "272272272272272272272272272272272272272272272272272272272272272272272272272272272272272272272272272272272272272272272272\x00\x00value:272\n"
+ "27272727272727272727272727272727272727272727272727272727272727272727272727272727\x00\x00value:27\n"
+ "273273273273273273273273273273273273273273273273273273273273273273273273273273273273273273273273273273273273273273273273\x00\x00value:273\n"
+ "274274274274274274274274274274274274274274274274274274274274274274274274274274274274274274274274274274274274274274274274\x00\x00value:274\n"
+ "275275275275275275275275275275275275275275275275275275275275275275275275275275275275275275275275275275275275275275275275\x00\x00value:275\n"
+ "276276276276276276276276276276276276276276276276276276276276276276276276276276276276276276276276276276276276276276276276\x00\x00value:276\n"
+ "277277277277277277277277277277277277277277277277277277277277277277277277277277277277277277277277277277277277277277277277\x00\x00value:277\n"
+ "278278278278278278278278278278278278278278278278278278278278278278278278278278278278278278278278278278278278278278278278\x00\x00value:278\n"
+ "279279279279279279279279279279279279279279279279279279279279279279279279279279279279279279279279279279279279279279279279\x00\x00value:279\n"
+ "280280280280280280280280280280280280280280280280280280280280280280280280280280280280280280280280280280280280280280280280\x00\x00value:280\n"
+ "281281281281281281281281281281281281281281281281281281281281281281281281281281281281281281281281281281281281281281281281\x00\x00value:281\n"
+ "282282282282282282282282282282282282282282282282282282282282282282282282282282282282282282282282282282282282282282282282\x00\x00value:282\n"
+ "28282828282828282828282828282828282828282828282828282828282828282828282828282828\x00\x00value:28\n"
+ "283283283283283283283283283283283283283283283283283283283283283283283283283283283283283283283283283283283283283283283283\x00\x00value:283\n"
+ "284284284284284284284284284284284284284284284284284284284284284284284284284284284284284284284284284284284284284284284284\x00\x00value:284\n"
+ "285285285285285285285285285285285285285285285285285285285285285285285285285285285285285285285285285285285285285285285285\x00\x00value:285\n"
+ "286286286286286286286286286286286286286286286286286286286286286286286286286286286286286286286286286286286286286286286286\x00\x00value:286\n"
+ "287287287287287287287287287287287287287287287287287287287287287287287287287287287287287287287287287287287287287287287287\x00\x00value:287\n"
+ "288288288288288288288288288288288288288288288288288288288288288288288288288288288288288288288288288288288288288288288288\x00\x00value:288\n"
+ "289289289289289289289289289289289289289289289289289289289289289289289289289289289289289289289289289289289289289289289289\x00\x00value:289\n"
+ "290290290290290290290290290290290290290290290290290290290290290290290290290290290290290290290290290290290290290290290290\x00\x00value:290\n"
+ "291291291291291291291291291291291291291291291291291291291291291291291291291291291291291291291291291291291291291291291291\x00\x00value:291\n"
+ "292292292292292292292292292292292292292292292292292292292292292292292292292292292292292292292292292292292292292292292292\x00\x00value:292\n"
+ "29292929292929292929292929292929292929292929292929292929292929292929292929292929\x00\x00value:29\n"
+ "293293293293293293293293293293293293293293293293293293293293293293293293293293293293293293293293293293293293293293293293\x00\x00value:293\n"
+ "294294294294294294294294294294294294294294294294294294294294294294294294294294294294294294294294294294294294294294294294\x00\x00value:294\n"
+ "295295295295295295295295295295295295295295295295295295295295295295295295295295295295295295295295295295295295295295295295\x00\x00value:295\n"
+ "296296296296296296296296296296296296296296296296296296296296296296296296296296296296296296296296296296296296296296296296\x00\x00value:296\n"
+ "297297297297297297297297297297297297297297297297297297297297297297297297297297297297297297297297297297297297297297297297\x00\x00value:297\n"
+ "298298298298298298298298298298298298298298298298298298298298298298298298298298298298298298298298298298298298298298298298\x00\x00value:298\n"
+ "299299299299299299299299299299299299299299299299299299299299299299299299299299299299299299299299299299299299299299299299\x00\x00value:299\n"
+ "300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300\x00\x00value:300\n"
+ "301301301301301301301301301301301301301301301301301301301301301301301301301301301301301301301301301301301301301301301301\x00\x00value:301\n"
+ "302302302302302302302302302302302302302302302302302302302302302302302302302302302302302302302302302302302302302302302302\x00\x00value:302\n"
+ "30303030303030303030303030303030303030303030303030303030303030303030303030303030\x00\x00value:30\n"
+ "303303303303303303303303303303303303303303303303303303303303303303303303303303303303303303303303303303303303303303303303\x00\x00value:303\n"
+ "304304304304304304304304304304304304304304304304304304304304304304304304304304304304304304304304304304304304304304304304\x00\x00value:304\n"
+ "305305305305305305305305305305305305305305305305305305305305305305305305305305305305305305305305305305305305305305305305\x00\x00value:305\n"
+ "306306306306306306306306306306306306306306306306306306306306306306306306306306306306306306306306306306306306306306306306\x00\x00value:306\n"
+ "307307307307307307307307307307307307307307307307307307307307307307307307307307307307307307307307307307307307307307307307\x00\x00value:307\n"
+ "308308308308308308308308308308308308308308308308308308308308308308308308308308308308308308308308308308308308308308308308\x00\x00value:308\n"
+ "309309309309309309309309309309309309309309309309309309309309309309309309309309309309309309309309309309309309309309309309\x00\x00value:309\n"
+ "310310310310310310310310310310310310310310310310310310310310310310310310310310310310310310310310310310310310310310310310\x00\x00value:310\n"
+ "311311311311311311311311311311311311311311311311311311311311311311311311311311311311311311311311311311311311311311311311\x00\x00value:311\n"
+ "312312312312312312312312312312312312312312312312312312312312312312312312312312312312312312312312312312312312312312312312\x00\x00value:312\n"
+ "31313131313131313131313131313131313131313131313131313131313131313131313131313131\x00\x00value:31\n"
+ "313313313313313313313313313313313313313313313313313313313313313313313313313313313313313313313313313313313313313313313313\x00\x00value:313\n"
+ "314314314314314314314314314314314314314314314314314314314314314314314314314314314314314314314314314314314314314314314314\x00\x00value:314\n"
+ "315315315315315315315315315315315315315315315315315315315315315315315315315315315315315315315315315315315315315315315315\x00\x00value:315\n"
+ "316316316316316316316316316316316316316316316316316316316316316316316316316316316316316316316316316316316316316316316316\x00\x00value:316\n"
+ "317317317317317317317317317317317317317317317317317317317317317317317317317317317317317317317317317317317317317317317317\x00\x00value:317\n"
+ "318318318318318318318318318318318318318318318318318318318318318318318318318318318318318318318318318318318318318318318318\x00\x00value:318\n"
+ "319319319319319319319319319319319319319319319319319319319319319319319319319319319319319319319319319319319319319319319319\x00\x00value:319\n"
+ "320320320320320320320320320320320320320320320320320320320320320320320320320320320320320320320320320320320320320320320320\x00\x00value:320\n"
+ "321321321321321321321321321321321321321321321321321321321321321321321321321321321321321321321321321321321321321321321321\x00\x00value:321\n"
+ "322322322322322322322322322322322322322322322322322322322322322322322322322322322322322322322322322322322322322322322322\x00\x00value:322\n"
+ "32323232323232323232323232323232323232323232323232323232323232323232323232323232\x00\x00value:32\n"
+ "323323323323323323323323323323323323323323323323323323323323323323323323323323323323323323323323323323323323323323323323\x00\x00value:323\n"
+ "324324324324324324324324324324324324324324324324324324324324324324324324324324324324324324324324324324324324324324324324\x00\x00value:324\n"
+ "325325325325325325325325325325325325325325325325325325325325325325325325325325325325325325325325325325325325325325325325\x00\x00value:325\n"
+ "326326326326326326326326326326326326326326326326326326326326326326326326326326326326326326326326326326326326326326326326\x00\x00value:326\n"
+ "327327327327327327327327327327327327327327327327327327327327327327327327327327327327327327327327327327327327327327327327\x00\x00value:327\n"
+ "328328328328328328328328328328328328328328328328328328328328328328328328328328328328328328328328328328328328328328328328\x00\x00value:328\n"
+ "329329329329329329329329329329329329329329329329329329329329329329329329329329329329329329329329329329329329329329329329\x00\x00value:329\n"
+ "330330330330330330330330330330330330330330330330330330330330330330330330330330330330330330330330330330330330330330330330\x00\x00value:330\n"
+ "331331331331331331331331331331331331331331331331331331331331331331331331331331331331331331331331331331331331331331331331\x00\x00value:331\n"
+ "332332332332332332332332332332332332332332332332332332332332332332332332332332332332332332332332332332332332332332332332\x00\x00value:332\n"
"3333333333333333333333333333333333333333\x00\x00value:3\n"
- "4444444444444444444444444444444444444444\x00\x00value:4\n")
- self.assertEqual(expected_node, node_bytes)
+ "33333333333333333333333333333333333333333333333333333333333333333333333333333333\x00\x00value:33\n"
+ "333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333\x00\x00value:333\n"
+ "334334334334334334334334334334334334334334334334334334334334334334334334334334334334334334334334334334334334334334334334\x00\x00value:334\n"
+ "335335335335335335335335335335335335335335335335335335335335335335335335335335335335335335335335335335335335335335335335\x00\x00value:335\n"
+ "336336336336336336336336336336336336336336336336336336336336336336336336336336336336336336336336336336336336336336336336\x00\x00value:336\n"
+ "337337337337337337337337337337337337337337337337337337337337337337337337337337337337337337337337337337337337337337337337\x00\x00value:337\n"
+ "338338338338338338338338338338338338338338338338338338338338338338338338338338338338338338338338338338338338338338338338\x00\x00value:338\n"
+ "339339339339339339339339339339339339339339339339339339339339339339339339339339339339339339339339339339339339339339339339\x00\x00value:339\n"
+ "340340340340340340340340340340340340340340340340340340340340340340340340340340340340340340340340340340340340340340340340\x00\x00value:340\n"
+ "341341341341341341341341341341341341341341341341341341341341341341341341341341341341341341341341341341341341341341341341\x00\x00value:341\n"
+ "342342342342342342342342342342342342342342342342342342342342342342342342342342342342342342342342342342342342342342342342\x00\x00value:342\n"
+ "343343343343343343343343343343343343343343343343343343343343343343343343343343343343343343343343343343343343343343343343\x00\x00value:343\n"
+ "34343434343434343434343434343434343434343434343434343434343434343434343434343434\x00\x00value:34\n"
+ "344344344344344344344344344344344344344344344344344344344344344344344344344344344344344344344344344344344344344344344344\x00\x00value:344\n"
+ "345345345345345345345345345345345345345345345345345345345345345345345345345345345345345345345345345345345345345345345345\x00\x00value:345\n"
+ "346346346346346346346346346346346346346346346346346346346346346346346346346346346346346346346346346346346346346346346346\x00\x00value:346\n"
+ "347347347347347347347347347347347347347347347347347347347347347347347347347347347347347347347347347347347347347347347347\x00\x00value:347\n"
+ )
+ self.assertEqual(expected_leaf1, leaf1_bytes)
+ leaf2_bytes = zlib.decompress(leaf2)
+ expected_leaf2 = (
+ "type=leaf\n"
+ "348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348348\x00\x00value:348\n"
+ "349349349349349349349349349349349349349349349349349349349349349349349349349349349349349349349349349349349349349349349349\x00\x00value:349\n"
+ "350350350350350350350350350350350350350350350350350350350350350350350350350350350350350350350350350350350350350350350350\x00\x00value:350\n"
+ "351351351351351351351351351351351351351351351351351351351351351351351351351351351351351351351351351351351351351351351351\x00\x00value:351\n"
+ "352352352352352352352352352352352352352352352352352352352352352352352352352352352352352352352352352352352352352352352352\x00\x00value:352\n"
+ "353353353353353353353353353353353353353353353353353353353353353353353353353353353353353353353353353353353353353353353353\x00\x00value:353\n"
+ "35353535353535353535353535353535353535353535353535353535353535353535353535353535\x00\x00value:35\n"
+ "354354354354354354354354354354354354354354354354354354354354354354354354354354354354354354354354354354354354354354354354\x00\x00value:354\n"
+ "355355355355355355355355355355355355355355355355355355355355355355355355355355355355355355355355355355355355355355355355\x00\x00value:355\n"
+ "356356356356356356356356356356356356356356356356356356356356356356356356356356356356356356356356356356356356356356356356\x00\x00value:356\n"
+ "357357357357357357357357357357357357357357357357357357357357357357357357357357357357357357357357357357357357357357357357\x00\x00value:357\n"
+ "358358358358358358358358358358358358358358358358358358358358358358358358358358358358358358358358358358358358358358358358\x00\x00value:358\n"
+ "359359359359359359359359359359359359359359359359359359359359359359359359359359359359359359359359359359359359359359359359\x00\x00value:359\n"
+ "360360360360360360360360360360360360360360360360360360360360360360360360360360360360360360360360360360360360360360360360\x00\x00value:360\n"
+ "361361361361361361361361361361361361361361361361361361361361361361361361361361361361361361361361361361361361361361361361\x00\x00value:361\n"
+ "362362362362362362362362362362362362362362362362362362362362362362362362362362362362362362362362362362362362362362362362\x00\x00value:362\n"
+ "363363363363363363363363363363363363363363363363363363363363363363363363363363363363363363363363363363363363363363363363\x00\x00value:363\n"
+ "36363636363636363636363636363636363636363636363636363636363636363636363636363636\x00\x00value:36\n"
+ "364364364364364364364364364364364364364364364364364364364364364364364364364364364364364364364364364364364364364364364364\x00\x00value:364\n"
+ "365365365365365365365365365365365365365365365365365365365365365365365365365365365365365365365365365365365365365365365365\x00\x00value:365\n"
+ "366366366366366366366366366366366366366366366366366366366366366366366366366366366366366366366366366366366366366366366366\x00\x00value:366\n"
+ "367367367367367367367367367367367367367367367367367367367367367367367367367367367367367367367367367367367367367367367367\x00\x00value:367\n"
+ "368368368368368368368368368368368368368368368368368368368368368368368368368368368368368368368368368368368368368368368368\x00\x00value:368\n"
+ "369369369369369369369369369369369369369369369369369369369369369369369369369369369369369369369369369369369369369369369369\x00\x00value:369\n"
+ "370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370370\x00\x00value:370\n"
+ "371371371371371371371371371371371371371371371371371371371371371371371371371371371371371371371371371371371371371371371371\x00\x00value:371\n"
+ "372372372372372372372372372372372372372372372372372372372372372372372372372372372372372372372372372372372372372372372372\x00\x00value:372\n"
+ "373373373373373373373373373373373373373373373373373373373373373373373373373373373373373373373373373373373373373373373373\x00\x00value:373\n"
+ "37373737373737373737373737373737373737373737373737373737373737373737373737373737\x00\x00value:37\n"
+ "374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374\x00\x00value:374\n"
+ "375375375375375375375375375375375375375375375375375375375375375375375375375375375375375375375375375375375375375375375375\x00\x00value:375\n"
+ "376376376376376376376376376376376376376376376376376376376376376376376376376376376376376376376376376376376376376376376376\x00\x00value:376\n"
+ "377377377377377377377377377377377377377377377377377377377377377377377377377377377377377377377377377377377377377377377377\x00\x00value:377\n"
+ "378378378378378378378378378378378378378378378378378378378378378378378378378378378378378378378378378378378378378378378378\x00\x00value:378\n"
+ "379379379379379379379379379379379379379379379379379379379379379379379379379379379379379379379379379379379379379379379379\x00\x00value:379\n"
+ "380380380380380380380380380380380380380380380380380380380380380380380380380380380380380380380380380380380380380380380380\x00\x00value:380\n"
+ "381381381381381381381381381381381381381381381381381381381381381381381381381381381381381381381381381381381381381381381381\x00\x00value:381\n"
+ "382382382382382382382382382382382382382382382382382382382382382382382382382382382382382382382382382382382382382382382382\x00\x00value:382\n"
+ "383383383383383383383383383383383383383383383383383383383383383383383383383383383383383383383383383383383383383383383383\x00\x00value:383\n"
+ "38383838383838383838383838383838383838383838383838383838383838383838383838383838\x00\x00value:38\n"
+ "384384384384384384384384384384384384384384384384384384384384384384384384384384384384384384384384384384384384384384384384\x00\x00value:384\n"
+ "385385385385385385385385385385385385385385385385385385385385385385385385385385385385385385385385385385385385385385385385\x00\x00value:385\n"
+ "386386386386386386386386386386386386386386386386386386386386386386386386386386386386386386386386386386386386386386386386\x00\x00value:386\n"
+ "387387387387387387387387387387387387387387387387387387387387387387387387387387387387387387387387387387387387387387387387\x00\x00value:387\n"
+ "388388388388388388388388388388388388388388388388388388388388388388388388388388388388388388388388388388388388388388388388\x00\x00value:388\n"
+ "389389389389389389389389389389389389389389389389389389389389389389389389389389389389389389389389389389389389389389389389\x00\x00value:389\n"
+ "390390390390390390390390390390390390390390390390390390390390390390390390390390390390390390390390390390390390390390390390\x00\x00value:390\n"
+ "391391391391391391391391391391391391391391391391391391391391391391391391391391391391391391391391391391391391391391391391\x00\x00value:391\n"
+ "392392392392392392392392392392392392392392392392392392392392392392392392392392392392392392392392392392392392392392392392\x00\x00value:392\n"
+ "393393393393393393393393393393393393393393393393393393393393393393393393393393393393393393393393393393393393393393393393\x00\x00value:393\n"
+ "39393939393939393939393939393939393939393939393939393939393939393939393939393939\x00\x00value:39\n"
+ "394394394394394394394394394394394394394394394394394394394394394394394394394394394394394394394394394394394394394394394394\x00\x00value:394\n"
+ "395395395395395395395395395395395395395395395395395395395395395395395395395395395395395395395395395395395395395395395395\x00\x00value:395\n"
+ "396396396396396396396396396396396396396396396396396396396396396396396396396396396396396396396396396396396396396396396396\x00\x00value:396\n"
+ "397397397397397397397397397397397397397397397397397397397397397397397397397397397397397397397397397397397397397397397397\x00\x00value:397\n"
+ "398398398398398398398398398398398398398398398398398398398398398398398398398398398398398398398398398398398398398398398398\x00\x00value:398\n"
+ "399399399399399399399399399399399399399399399399399399399399399399399399399399399399399399399399399399399399399399399399\x00\x00value:399\n"
+ "400400400400400400400400400400400400400400400400400400400400400400400400400400400400400400400400400400400400400400400400\x00\x00value:400\n"
+ "401401401401401401401401401401401401401401401401401401401401401401401401401401401401401401401401401401401401401401401401\x00\x00value:401\n"
+ "402402402402402402402402402402402402402402402402402402402402402402402402402402402402402402402402402402402402402402402402\x00\x00value:402\n"
+ "403403403403403403403403403403403403403403403403403403403403403403403403403403403403403403403403403403403403403403403403\x00\x00value:403\n"
+ "40404040404040404040404040404040404040404040404040404040404040404040404040404040\x00\x00value:40\n"
+ "404404404404404404404404404404404404404404404404404404404404404404404404404404404404404404404404404404404404404404404404\x00\x00value:404\n"
+ "405405405405405405405405405405405405405405405405405405405405405405405405405405405405405405405405405405405405405405405405\x00\x00value:405\n"
+ "406406406406406406406406406406406406406406406406406406406406406406406406406406406406406406406406406406406406406406406406\x00\x00value:406\n"
+ "407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407\x00\x00value:407\n"
+ "408408408408408408408408408408408408408408408408408408408408408408408408408408408408408408408408408408408408408408408408\x00\x00value:408\n"
+ "409409409409409409409409409409409409409409409409409409409409409409409409409409409409409409409409409409409409409409409409\x00\x00value:409\n"
+ "410410410410410410410410410410410410410410410410410410410410410410410410410410410410410410410410410410410410410410410410\x00\x00value:410\n"
+ "411411411411411411411411411411411411411411411411411411411411411411411411411411411411411411411411411411411411411411411411\x00\x00value:411\n"
+ "412412412412412412412412412412412412412412412412412412412412412412412412412412412412412412412412412412412412412412412412\x00\x00value:412\n"
+ "413413413413413413413413413413413413413413413413413413413413413413413413413413413413413413413413413413413413413413413413\x00\x00value:413\n"
+ "41414141414141414141414141414141414141414141414141414141414141414141414141414141\x00\x00value:41\n"
+ "414414414414414414414414414414414414414414414414414414414414414414414414414414414414414414414414414414414414414414414414\x00\x00value:414\n"
+ "415415415415415415415415415415415415415415415415415415415415415415415415415415415415415415415415415415415415415415415415\x00\x00value:415\n"
+ "416416416416416416416416416416416416416416416416416416416416416416416416416416416416416416416416416416416416416416416416\x00\x00value:416\n"
+ "417417417417417417417417417417417417417417417417417417417417417417417417417417417417417417417417417417417417417417417417\x00\x00value:417\n"
+ "418418418418418418418418418418418418418418418418418418418418418418418418418418418418418418418418418418418418418418418418\x00\x00value:418\n"
+ "419419419419419419419419419419419419419419419419419419419419419419419419419419419419419419419419419419419419419419419419\x00\x00value:419\n"
+ "420420420420420420420420420420420420420420420420420420420420420420420420420420420420420420420420420420420420420420420420\x00\x00value:420\n"
+ "421421421421421421421421421421421421421421421421421421421421421421421421421421421421421421421421421421421421421421421421\x00\x00value:421\n"
+ "422422422422422422422422422422422422422422422422422422422422422422422422422422422422422422422422422422422422422422422422\x00\x00value:422\n"
+ "423423423423423423423423423423423423423423423423423423423423423423423423423423423423423423423423423423423423423423423423\x00\x00value:423\n"
+ "42424242424242424242424242424242424242424242424242424242424242424242424242424242\x00\x00value:42\n"
+ "424424424424424424424424424424424424424424424424424424424424424424424424424424424424424424424424424424424424424424424424\x00\x00value:424\n"
+ "425425425425425425425425425425425425425425425425425425425425425425425425425425425425425425425425425425425425425425425425\x00\x00value:425\n"
+ "426426426426426426426426426426426426426426426426426426426426426426426426426426426426426426426426426426426426426426426426\x00\x00value:426\n"
+ "427427427427427427427427427427427427427427427427427427427427427427427427427427427427427427427427427427427427427427427427\x00\x00value:427\n"
+ "428428428428428428428428428428428428428428428428428428428428428428428428428428428428428428428428428428428428428428428428\x00\x00value:428\n"
+ "429429429429429429429429429429429429429429429429429429429429429429429429429429429429429429429429429429429429429429429429\x00\x00value:429\n"
+ "430430430430430430430430430430430430430430430430430430430430430430430430430430430430430430430430430430430430430430430430\x00\x00value:430\n"
+ "431431431431431431431431431431431431431431431431431431431431431431431431431431431431431431431431431431431431431431431431\x00\x00value:431\n"
+ "432432432432432432432432432432432432432432432432432432432432432432432432432432432432432432432432432432432432432432432432\x00\x00value:432\n"
+ "433433433433433433433433433433433433433433433433433433433433433433433433433433433433433433433433433433433433433433433433\x00\x00value:433\n"
+ "43434343434343434343434343434343434343434343434343434343434343434343434343434343\x00\x00value:43\n"
+ "434434434434434434434434434434434434434434434434434434434434434434434434434434434434434434434434434434434434434434434434\x00\x00value:434\n"
+ "435435435435435435435435435435435435435435435435435435435435435435435435435435435435435435435435435435435435435435435435\x00\x00value:435\n"
+ "436436436436436436436436436436436436436436436436436436436436436436436436436436436436436436436436436436436436436436436436\x00\x00value:436\n"
+ "437437437437437437437437437437437437437437437437437437437437437437437437437437437437437437437437437437437437437437437437\x00\x00value:437\n"
+ "438438438438438438438438438438438438438438438438438438438438438438438438438438438438438438438438438438438438438438438438\x00\x00value:438\n"
+ "439439439439439439439439439439439439439439439439439439439439439439439439439439439439439439439439439439439439439439439439\x00\x00value:439\n"
+ "440440440440440440440440440440440440440440440440440440440440440440440440440440440440440440440440440440440440440440440440\x00\x00value:440\n"
+ "441441441441441441441441441441441441441441441441441441441441441441441441441441441441441441441441441441441441441441441441\x00\x00value:441\n"
+ "442442442442442442442442442442442442442442442442442442442442442442442442442442442442442442442442442442442442442442442442\x00\x00value:442\n"
+ "443443443443443443443443443443443443443443443443443443443443443443443443443443443443443443443443443443443443443443443443\x00\x00value:443\n"
+ "4444444444444444444444444444444444444444\x00\x00value:4\n"
+ "44444444444444444444444444444444444444444444444444444444444444444444444444444444\x00\x00value:44\n"
+ "444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444\x00\x00value:444\n"
+ "445445445445445445445445445445445445445445445445445445445445445445445445445445445445445445445445445445445445445445445445\x00\x00value:445\n"
+ "446446446446446446446446446446446446446446446446446446446446446446446446446446446446446446446446446446446446446446446446\x00\x00value:446\n"
+ "447447447447447447447447447447447447447447447447447447447447447447447447447447447447447447447447447447447447447447447447\x00\x00value:447\n"
+ "448448448448448448448448448448448448448448448448448448448448448448448448448448448448448448448448448448448448448448448448\x00\x00value:448\n"
+ "449449449449449449449449449449449449449449449449449449449449449449449449449449449449449449449449449449449449449449449449\x00\x00value:449\n"
+ "450450450450450450450450450450450450450450450450450450450450450450450450450450450450450450450450450450450450450450450450\x00\x00value:450\n"
+ "451451451451451451451451451451451451451451451451451451451451451451451451451451451451451451451451451451451451451451451451\x00\x00value:451\n"
+ "452452452452452452452452452452452452452452452452452452452452452452452452452452452452452452452452452452452452452452452452\x00\x00value:452\n"
+ "453453453453453453453453453453453453453453453453453453453453453453453453453453453453453453453453453453453453453453453453\x00\x00value:453\n"
+ "454454454454454454454454454454454454454454454454454454454454454454454454454454454454454454454454454454454454454454454454\x00\x00value:454\n"
+ "45454545454545454545454545454545454545454545454545454545454545454545454545454545\x00\x00value:45\n"
+ "455455455455455455455455455455455455455455455455455455455455455455455455455455455455455455455455455455455455455455455455\x00\x00value:455\n"
+ "456456456456456456456456456456456456456456456456456456456456456456456456456456456456456456456456456456456456456456456456\x00\x00value:456\n"
+ "457457457457457457457457457457457457457457457457457457457457457457457457457457457457457457457457457457457457457457457457\x00\x00value:457\n"
+ "458458458458458458458458458458458458458458458458458458458458458458458458458458458458458458458458458458458458458458458458\x00\x00value:458\n"
+ "459459459459459459459459459459459459459459459459459459459459459459459459459459459459459459459459459459459459459459459459\x00\x00value:459\n"
+ "460460460460460460460460460460460460460460460460460460460460460460460460460460460460460460460460460460460460460460460460\x00\x00value:460\n"
+ "461461461461461461461461461461461461461461461461461461461461461461461461461461461461461461461461461461461461461461461461\x00\x00value:461\n"
+ "462462462462462462462462462462462462462462462462462462462462462462462462462462462462462462462462462462462462462462462462\x00\x00value:462\n"
+ "463463463463463463463463463463463463463463463463463463463463463463463463463463463463463463463463463463463463463463463463\x00\x00value:463\n"
+ "464464464464464464464464464464464464464464464464464464464464464464464464464464464464464464464464464464464464464464464464\x00\x00value:464\n"
+ "46464646464646464646464646464646464646464646464646464646464646464646464646464646\x00\x00value:46\n"
+ "465465465465465465465465465465465465465465465465465465465465465465465465465465465465465465465465465465465465465465465465\x00\x00value:465\n"
+ "466466466466466466466466466466466466466466466466466466466466466466466466466466466466466466466466466466466466466466466466\x00\x00value:466\n"
+ "467467467467467467467467467467467467467467467467467467467467467467467467467467467467467467467467467467467467467467467467\x00\x00value:467\n"
+ "468468468468468468468468468468468468468468468468468468468468468468468468468468468468468468468468468468468468468468468468\x00\x00value:468\n"
+ "469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469\x00\x00value:469\n"
+ "470470470470470470470470470470470470470470470470470470470470470470470470470470470470470470470470470470470470470470470470\x00\x00value:470\n"
+ "471471471471471471471471471471471471471471471471471471471471471471471471471471471471471471471471471471471471471471471471\x00\x00value:471\n"
+ "472472472472472472472472472472472472472472472472472472472472472472472472472472472472472472472472472472472472472472472472\x00\x00value:472\n"
+ "473473473473473473473473473473473473473473473473473473473473473473473473473473473473473473473473473473473473473473473473\x00\x00value:473\n"
+ "474474474474474474474474474474474474474474474474474474474474474474474474474474474474474474474474474474474474474474474474\x00\x00value:474\n"
+ "47474747474747474747474747474747474747474747474747474747474747474747474747474747\x00\x00value:47\n"
+ "475475475475475475475475475475475475475475475475475475475475475475475475475475475475475475475475475475475475475475475475\x00\x00value:475\n"
+ "476476476476476476476476476476476476476476476476476476476476476476476476476476476476476476476476476476476476476476476476\x00\x00value:476\n"
+ "477477477477477477477477477477477477477477477477477477477477477477477477477477477477477477477477477477477477477477477477\x00\x00value:477\n"
+ "478478478478478478478478478478478478478478478478478478478478478478478478478478478478478478478478478478478478478478478478\x00\x00value:478\n"
+ "479479479479479479479479479479479479479479479479479479479479479479479479479479479479479479479479479479479479479479479479\x00\x00value:479\n"
+ "480480480480480480480480480480480480480480480480480480480480480480480480480480480480480480480480480480480480480480480480\x00\x00value:480\n"
+ "481481481481481481481481481481481481481481481481481481481481481481481481481481481481481481481481481481481481481481481481\x00\x00value:481\n"
+ "482482482482482482482482482482482482482482482482482482482482482482482482482482482482482482482482482482482482482482482482\x00\x00value:482\n"
+ "483483483483483483483483483483483483483483483483483483483483483483483483483483483483483483483483483483483483483483483483\x00\x00value:483\n"
+ "484484484484484484484484484484484484484484484484484484484484484484484484484484484484484484484484484484484484484484484484\x00\x00value:484\n"
+ "48484848484848484848484848484848484848484848484848484848484848484848484848484848\x00\x00value:48\n"
+ "485485485485485485485485485485485485485485485485485485485485485485485485485485485485485485485485485485485485485485485485\x00\x00value:485\n"
+ "486486486486486486486486486486486486486486486486486486486486486486486486486486486486486486486486486486486486486486486486\x00\x00value:486\n"
+ "487487487487487487487487487487487487487487487487487487487487487487487487487487487487487487487487487487487487487487487487\x00\x00value:487\n"
+ "488488488488488488488488488488488488488488488488488488488488488488488488488488488488488488488488488488488488488488488488\x00\x00value:488\n"
+ "489489489489489489489489489489489489489489489489489489489489489489489489489489489489489489489489489489489489489489489489\x00\x00value:489\n"
+ "490490490490490490490490490490490490490490490490490490490490490490490490490490490490490490490490490490490490490490490490\x00\x00value:490\n"
+ "491491491491491491491491491491491491491491491491491491491491491491491491491491491491491491491491491491491491491491491491\x00\x00value:491\n"
+ "492492492492492492492492492492492492492492492492492492492492492492492492492492492492492492492492492492492492492492492492\x00\x00value:492\n"
+ "493493493493493493493493493493493493493493493493493493493493493493493493493493493493493493493493493493493493493493493493\x00\x00value:493\n"
+ "494494494494494494494494494494494494494494494494494494494494494494494494494494494494494494494494494494494494494494494494\x00\x00value:494\n"
+ "49494949494949494949494949494949494949494949494949494949494949494949494949494949\x00\x00value:49\n"
+ "495495495495495495495495495495495495495495495495495495495495495495495495495495495495495495495495495495495495495495495495\x00\x00value:495\n"
+ "496496496496496496496496496496496496496496496496496496496496496496496496496496496496496496496496496496496496496496496496\x00\x00value:496\n"
+ "497497497497497497497497497497497497497497497497497497497497497497497497497497497497497497497497497497497497497497497497\x00\x00value:497\n"
+ "498498498498498498498498498498498498498498498498498498498498498498498498498498498498498498498498498498498498498498498498\x00\x00value:498\n"
+ "499499499499499499499499499499499499499499499499499499499499499499499499499499499499499499499499499499499499499499499499\x00\x00value:499\n"
+ "50505050505050505050505050505050505050505050505050505050505050505050505050505050\x00\x00value:50\n"
+ "51515151515151515151515151515151515151515151515151515151515151515151515151515151\x00\x00value:51\n"
+ "52525252525252525252525252525252525252525252525252525252525252525252525252525252\x00\x00value:52\n"
+ "53535353535353535353535353535353535353535353535353535353535353535353535353535353\x00\x00value:53\n"
+ "54545454545454545454545454545454545454545454545454545454545454545454545454545454\x00\x00value:54\n"
+ "5555555555555555555555555555555555555555\x00\x00value:5\n"
+ "55555555555555555555555555555555555555555555555555555555555555555555555555555555\x00\x00value:55\n"
+ "56565656565656565656565656565656565656565656565656565656565656565656565656565656\x00\x00value:56\n"
+ "57575757575757575757575757575757575757575757575757575757575757575757575757575757\x00\x00value:57\n"
+ "58585858585858585858585858585858585858585858585858585858585858585858585858585858\x00\x00value:58\n"
+ "59595959595959595959595959595959595959595959595959595959595959595959595959595959\x00\x00value:59\n"
+ "60606060606060606060606060606060606060606060606060606060606060606060606060606060\x00\x00value:60\n"
+ "61616161616161616161616161616161616161616161616161616161616161616161616161616161\x00\x00value:61\n"
+ "62626262626262626262626262626262626262626262626262626262626262626262626262626262\x00\x00value:62\n"
+ "63636363636363636363636363636363636363636363636363636363636363636363636363636363\x00\x00value:63\n"
+ "64646464646464646464646464646464646464646464646464646464646464646464646464646464\x00\x00value:64\n"
+ "65656565656565656565656565656565656565656565656565656565656565656565656565656565\x00\x00value:65\n"
+ "6666666666666666666666666666666666666666\x00\x00value:6\n"
+ "66666666666666666666666666666666666666666666666666666666666666666666666666666666\x00\x00value:66\n"
+ "67676767676767676767676767676767676767676767676767676767676767676767676767676767\x00\x00value:67\n"
+ "68686868686868686868686868686868686868686868686868686868686868686868686868686868\x00\x00value:68\n"
+ "69696969696969696969696969696969696969696969696969696969696969696969696969696969\x00\x00value:69\n"
+ "70707070707070707070707070707070707070707070707070707070707070707070707070707070\x00\x00value:70\n"
+ "71717171717171717171717171717171717171717171717171717171717171717171717171717171\x00\x00value:71\n"
+ "72727272727272727272727272727272727272727272727272727272727272727272727272727272\x00\x00value:72\n"
+ "73737373737373737373737373737373737373737373737373737373737373737373737373737373\x00\x00value:73\n"
+ "74747474747474747474747474747474747474747474747474747474747474747474747474747474\x00\x00value:74\n"
+ "75757575757575757575757575757575757575757575757575757575757575757575757575757575\x00\x00value:75\n"
+ "76767676767676767676767676767676767676767676767676767676767676767676767676767676\x00\x00value:76\n"
+ "7777777777777777777777777777777777777777\x00\x00value:7\n"
+ "77777777777777777777777777777777777777777777777777777777777777777777777777777777\x00\x00value:77\n"
+ "78787878787878787878787878787878787878787878787878787878787878787878787878787878\x00\x00value:78\n"
+ "79797979797979797979797979797979797979797979797979797979797979797979797979797979\x00\x00value:79\n"
+ "80808080808080808080808080808080808080808080808080808080808080808080808080808080\x00\x00value:80\n"
+ "81818181818181818181818181818181818181818181818181818181818181818181818181818181\x00\x00value:81\n"
+ "82828282828282828282828282828282828282828282828282828282828282828282828282828282\x00\x00value:82\n"
+ "83838383838383838383838383838383838383838383838383838383838383838383838383838383\x00\x00value:83\n"
+ "84848484848484848484848484848484848484848484848484848484848484848484848484848484\x00\x00value:84\n"
+ "85858585858585858585858585858585858585858585858585858585858585858585858585858585\x00\x00value:85\n"
+ "86868686868686868686868686868686868686868686868686868686868686868686868686868686\x00\x00value:86\n"
+ "87878787878787878787878787878787878787878787878787878787878787878787878787878787\x00\x00value:87\n"
+ "8888888888888888888888888888888888888888\x00\x00value:8\n"
+ "88888888888888888888888888888888888888888888888888888888888888888888888888888888\x00\x00value:88\n"
+ "89898989898989898989898989898989898989898989898989898989898989898989898989898989\x00\x00value:89\n"
+ "90909090909090909090909090909090909090909090909090909090909090909090909090909090\x00\x00value:90\n"
+ "91919191919191919191919191919191919191919191919191919191919191919191919191919191\x00\x00value:91\n"
+ "92929292929292929292929292929292929292929292929292929292929292929292929292929292\x00\x00value:92\n"
+ "93939393939393939393939393939393939393939393939393939393939393939393939393939393\x00\x00value:93\n"
+ "94949494949494949494949494949494949494949494949494949494949494949494949494949494\x00\x00value:94\n"
+ "95959595959595959595959595959595959595959595959595959595959595959595959595959595\x00\x00value:95\n"
+ "96969696969696969696969696969696969696969696969696969696969696969696969696969696\x00\x00value:96\n"
+ "97979797979797979797979797979797979797979797979797979797979797979797979797979797\x00\x00value:97\n"
+ "98989898989898989898989898989898989898989898989898989898989898989898989898989898\x00\x00value:98\n"
+ "9999999999999999999999999999999999999999\x00\x00value:9\n"
+ "99999999999999999999999999999999999999999999999999999999999999999999999999999999\x00\x00value:99\n"
+ )
+ self.assertEqual(expected_leaf2, leaf2_bytes)
- def _test_2_leaves_2_2(self):
+ def test_2_leaves_2_2(self):
builder = btree_index.BTreeBuilder(key_elements=2, reference_lists=2)
- nodes = self.make_nodes(5, 2, 2)
+ nodes = self.make_nodes(100, 2, 2)
for node in nodes:
builder.add_node(*node)
content = builder.finish().read()
- self.assertEqual(4096, len(content))
+ self.assertEqual(4096*3, len(content))
self.assertEqual(
- "B+Tree Graph Index 1\nnode_ref_lists=2\nkey_elements=2\nlen=10\n"
+ "B+Tree Graph Index 1\nnode_ref_lists=2\nkey_elements=2\nlen=200\n"
"row_lengths=1,2\n",
- content[:60])
- node_content = content[60:]
- node_bytes = zlib.decompress(node_content)
- expected_node = (
- "type=leaf\n"
- "0000000000000000000000000000000000000000\x000000000000000000000000000000000000000000\x00\t0000000000000000000000000000000000000000\x00ref0000000000000000000000000000000000000000\x00value:0\n"
- "0000000000000000000000000000000000000000\x001111111111111111111111111111111111111111\x000000000000000000000000000000000000000000\x00ref0000000000000000000000000000000000000000\t0000000000000000000000000000000000000000\x00ref0000000000000000000000000000000000000000\r0000000000000000000000000000000000000000\x00ref0000000000000000000000000000000000000000\x00value:1\n"
- "0000000000000000000000000000000000000000\x002222222222222222222222222222222222222222\x00\t0000000000000000000000000000000000000000\x00ref0000000000000000000000000000000000000000\x00value:2\n"
- "0000000000000000000000000000000000000000\x003333333333333333333333333333333333333333\x000000000000000000000000000000000000000000\x00ref2222222222222222222222222222222222222222\t0000000000000000000000000000000000000000\x00ref2222222222222222222222222222222222222222\r0000000000000000000000000000000000000000\x00ref2222222222222222222222222222222222222222\x00value:3\n"
- "0000000000000000000000000000000000000000\x004444444444444444444444444444444444444444\x00\t0000000000000000000000000000000000000000\x00ref0000000000000000000000000000000000000000\x00value:4\n"
- "1111111111111111111111111111111111111111\x000000000000000000000000000000000000000000\x00\t1111111111111111111111111111111111111111\x00ref0000000000000000000000000000000000000000\x00value:0\n"
- "1111111111111111111111111111111111111111\x001111111111111111111111111111111111111111\x001111111111111111111111111111111111111111\x00ref0000000000000000000000000000000000000000\t1111111111111111111111111111111111111111\x00ref0000000000000000000000000000000000000000\r1111111111111111111111111111111111111111\x00ref0000000000000000000000000000000000000000\x00value:1\n"
- "1111111111111111111111111111111111111111\x002222222222222222222222222222222222222222\x00\t1111111111111111111111111111111111111111\x00ref0000000000000000000000000000000000000000\x00value:2\n"
- "1111111111111111111111111111111111111111\x003333333333333333333333333333333333333333\x001111111111111111111111111111111111111111\x00ref2222222222222222222222222222222222222222\t1111111111111111111111111111111111111111\x00ref2222222222222222222222222222222222222222\r1111111111111111111111111111111111111111\x00ref2222222222222222222222222222222222222222\x00value:3\n"
- "1111111111111111111111111111111111111111\x004444444444444444444444444444444444444444\x00\t1111111111111111111111111111111111111111\x00ref0000000000000000000000000000000000000000\x00value:4\n"
- ""
+ content[:77])
+ root = content[77:4096]
+ leaf1 = content[4096:8192]
+ leaf2 = content[8192:]
+ root_bytes = zlib.decompress(root)
+ expected_root = (
+ "type=internal\n"
+ "offset=0\n"
+ "1111111111111111111111111111111111111111\x0049494949494949494949494949494949494949494949494949494949494949494949494949494949\n"
)
- self.assertEqual(expected_node, node_bytes)
+ self.assertEqual(expected_root, root_bytes)
+ # We assume the other leaf nodes have been written correctly - layering FTW.
More information about the bazaar-commits
mailing list