TODO
* libfdata next search keep going on a key match?

* fix flaky test for System_Search_AutoSummary (one byte off?)
* pyesedb
  - null value support
  - long value: add data size support
* refactor libesedb_record_get_value_binary_data_size and
  libesedb_record_get_value_binary_data
* complete libfdata btree refactor
  - libesedb_values_tree.c replace by fdata functions?
  - fix is_flexible_match for xp_search.edb indexes
* record flags
  - add indication of corrupt records

* format notes:
  - value of un-initialized page checksum: 0xdeadbeefbaadf00d
    "ESE Super ECCXORChecksum"

* create tool to analyze cache usage, hits and misses
* move read of data definition into leaf value callback
  - create separate callback for long values?
  - this will clean up data definition
* refactor:
  - libesedb_multi_value_get_value what about value_type ?
  - clean up multi value calls to libfvalue
  - libesedb_long_value_get_segment_data
* deprecate:
  - libesedb_record_get_value
  - libesedb_multi_value_get_value
* complete libfvalue update integration - multi value

* windows search add support for windows 8 SystemIndex_PropertyStore
* libesedb check esedbtools_libX header files for _LIBESEDB_LIBX_ defs
* handle compressed values inside the library
  - compressed binary data
* esedbexport -t /root creates /root.export ?
* esedbexport skip table on error
* check Win2K ntds.dit support
* clean up and refactor info handle
* export handle: fix creation of indexes directory

API:
* add function to retrieve database signature
  - can be used to match up EDB/STM pairs
* add long value functions (string and binary data?)
* remove
  - libesedb_record_get_value
  - libesedb_long_value_get_segment_data
  - libesedb_multi_value_get_value

* windows search
  - multi long value segment decryption/compression support
* export error in more test files: nibble count value exceeds maximum

* code clean up
  - change page value index and number of values into int
  - clean up TODO's
  - refactor info handle
* combine libesedb_io_handle_read_page with libesedb_page_read
  - need libesedb_page_read for recovery ?

* page tree on demand
  - check sanity of page value 0 
* clean up
  - libesedb_data_type_definition remove offset
* handle default value
  - need database which uses default value
* parse variable types even when they are not part of the table catalog definition
* add support for build in table number 1
* implement cloning of items for improved asynchronous and multi threaded usage

libesedb:
* add get_table_by_object_identifier function
* ECC checksum
  - non 4 byte modulus buffer support
  - add alignment optimization
  - error correction
  - Windows 7 extended checksum ?
* template table
  - what about non-tagged data types
* multi value
  - what about multi value 0x18
* database header
  - compare primary and secondary
* catalog
  - compare primary and secondary
  - limit the size of the catalog ?
  - support for type 0x0006
  - support for type 0x0007 (line 3457 in libesedb_page_tree.c)
* long values
  - support for non-linear stored long value segments - current solution does a sanity check
* default values
   - apply to data definition

Error tolerance
* probe test for the page size using the backup database header
* use backup catalog

Debug
* is function libesedb_debug_print_table_group_of_bits needed?
* print value flags
* print part of keys as strings

Tools
* esedbinfo
  - page summary (scan for uninitialized, empty, etc. pages)
  - file header summary (check backup file header)
  - summary of catalog (check backup catalog)
  - print database state
* esedbexport
  - add export mode

Windows search:
* improve windows_search_decompress_byte_indexed_compressed_data

File format
* where is the root object defined? or is it implied to be object 1?
* compressed table, column, index names ?
* page flags
  - 0x0400, 0x0800, 0x8000
* tagged values
  - flag 0x4000
* multi value offsets
  - flag 0x8000
* page flags
* page keys
* (revision 0x11) extended page header
* what about the first byte in 7-bit ascii compressed data
* codepage 1200 string in Exchange EDB starts with 0xff 0xff
* streaming file
  - only consists of ESEDB header with paged streamed data,
    how to reconstruct streams ?

Deployment:
* update configure
  - improve libfdata detection
  - improve libfguid detection
  - improve libfwnt detection
* update manuals
  - add esedbexport.1

Performance
* create data definition tree in page tree for faster lookup of keys
  keep list for sequential access (B+-tree)
* create a UTF-8 version of run-length compressed UTF-16 string decompression function
* use register alignment for key comparison
* optimize libesedb_checksum_calculate_little_endian_ecc32

Test suite:
* windows search: work on index-based compression
  - create test program to validate output

Notes
* create a root page table instead?
  - no
* read catalog data type defintions and convert them into column definitions?
  - no

20160902
* worked on tests

20160110
* worked on Python 3 support

20160107
* 2016 update

20151219
* changes for deployment

20151213
* worked on support for newly discovered unknown page flag
* removed LIBESEDB_FLAG_READ and LIBESEDB_FLAG_WRITE

20151205
* worked on Python bindings

20150905
* updated dependencies

20150822
* worked on setup.py

20150704
* code clean up

20150409
* changes for long value look up in dirty databases

20150405
* changes for handling tagged data types in version 0x620 revision 0x14
  database
* changes for long value key compare

20150322
* worked on Python bindings
* worked on long value support
* worked on long value error tolerance
* worked on NULL value support (JET_coltypNil)

20150321
* worked on libfdata btree refactor
* changes for long value key compare

20150105
* 2015 update

20141224
* worked on Python 3 support
* worked on tests

20141129
* code clean up

20141110
* code clean up

20141109
* worked on reading backup catalog
* additional checks for out of bound page tags value offset and size values
* worked on libfdata btree refactor

20141026
* changes for deployment

20141019
* changes for deployment

20141014
* worked on utility scripts

20141004
* update Python-bindings tests
* additional checks for out of bound page tags value offset and size values

20141003
* removed README.macosx
* changes for project site move

20140915
* worked on libfdata btree refactor

20140803
* bug fix in Python-bindings

20140726
* updated dependencies

20130406
* worked on Python-bindings
* updated msvscpp files

20130317
* worked on setup.py

20130305
* worked on Python-bindings
* worked on multi value

20130304
* worked on Python-bindings

20130302
* worked on Python-bindings

20130301
* fix in dpkg files
* worked on Python-bindings

20130217
* worked on Python-bindings

20130216
* 2014 update
* updated dependencies
* worked on Python-bindings
* worked on libfdata update
* worked on libfvalue update

20130421
* worked on libfvalue update

20130420
* worked on libfvalue update

20130415
* worked on libfvalue update

20130414
* updated dependencies
* updated macosx files
* textual changes
* changes for libfdata update
* worked on libfvalue update

20130303
* updated dependencies
* 2013 update
* changes for libfdata update

20120826
* updated dependencies
* project move

20120517
* updated dependencies

20120423
* fixes for deployment

20120414
* updated dependencies
* code clean up

20120411
* code clean up

20120102
* 2012 update

20111210
* updated libcstring, libsystem
* esedbexport:
  - added table index nr to filename for duplicate table names
  - added microseconds to filetimes

20111127
* updated libfdata
* added libfcache

20111120
* code clean up
* updated array type, list type
* updated libcstring, libsystem, libfdata, libfdatetime, libfguid, libfvalue,
  libfmapi, libfwnt
* removed restriction that page tree header should consists of 0-byte values

20111031
* updated README.macosx
* updated libcstring, libsystem, libuna, libbfio, libfdatetime, libfvalue

20111030
* updated configure.ac and m4 files
* updated libfdatetime, libfvalue
* changes for libfvalue

20111008
* updated configure.ac and m4 files
* updated README files
* updated pc and spec file
* worked on compressed binary data support
* updated common, libsystem, libfdatetime

20111002
* improved space tree leaf page entry support
* worked on compression support
  - added XPRESS support
  - improved 7-bit support
* bug fix for tagged data value offset > 0x4000 in certain 0x620 revision 0x11
  databases

20110927
* updated libfmapi

20110925
* updated libuna, libbfio, libfdatetime
* added 7bit ASCII compressed strings support
* added 7bit ASCII compressed multi value strings support

20110920
* code clean up

20110919
* updated configure

20110904
* updated configure

20110828
* updated configure, common, libsystem, libbfio, libfvalue, 
* added support to ignore empty pages
* windows search added support for compression type 0x06

20110713
* updated msvscpp files

20110712
* fixes for export handle and windows search ASCII codepage
* windows search: fix for cut-off of 'compressed' UTF-16 stream in the surrogate range
* code clean up
* updated libfdata
* fixed unused variables warnings in libfdata and libesedb

20110711
* changes for: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body
* updated common, libcstring, log_handle.[ch], libuna, libbfio, libfdatetime,
  libfmapi, libfvalue
* refactored export handle and esedbexport
* refactored esedbinfo to use info handle
* code clean up

20110509
* updated libesedb_libfdata.h

20110413
* updated libuna - initial windows 936 codepage support
* updated libcstring, libfdata
* updated msvscpp files
* worked on windows search codepage support
* code clean up

20110321
* updated msvsccp files

20110320
* updated configure.ac, libcstring, libsystem, libuna, libbfio, libfdata,
  libfguid, libfmapi
* fix for revision 11 and < 16K paged files

20110122
* updated libfdata

20110121
* updated libfdata

20110120
* updated exchange_export_record_value_guid to handle non 16 byte values

20110114
* updated common, libcstring, libsystem, libuna, libbfio, libfdata, libfmapi,
  libfvalue
* esedbtools: code clean
* optimization for non existent key lookup
* fix for long value segment key

20110107
* updated configure.ac
* updated libsystem, libfvalue
* some changes to exchange output conversion

20110103
* updated libuna, libbfio, libfdatetime, libfguid, libfwnt, libfmapi
* 2011 update

20101231
* updated configure.ac
* updated common, libcstring, liberror, libnotify, libsystem, libuna, libbfio,
  libfdata, libfdatetime, libfvalue
* updated array type, list type
* code clean up
* fix for generation of libesedb.pc

20101119
* updated configure.ac
* updated libcstring, liberror, libbfio
* updated msvscpp - added missing libfmapi

20101113
* worked on streaming file support
* updated libfmapi
* textual changes

20101112
* updated libfvalue: optimization for codepage 1200 handling
* worked on support for windows search compression type 2
* fixed issue in debug output

20101111
* improved multi value support
* updated libfvalue
* esedbexport: worked on support for exchange
* fixed issue regarding incorrect long value segment offset
* esedbexport: reformats text with some escaped special characters

20101110
* updated configure.ac
* updated include/error.h
* updated include/types.h
* updated array type
* updated common, liberror, libnotify, libsystem, libbfio, libfdata, libfmapi
  libfvalue
* worked on support for multi value with emtpy values
* added libesedb.rc for msvscpp build

20100919
* worked on Windows Security database support

20100916
* added support for handling space tree page: 0
* updated libcstring, libsystem, libuna, libbfio, libfdata, libfdatetime,
  libfguid, libfmapi, libfvalue, libfwnt

20100903
* code clean up

20100807
* changed ThumbnailCacheId to hexadecimal representation

20100803
* updated libfdata

20100802
* updated libuna, libbfio
* improved codepage 1200 support

20100730
* worked on esedbexport export mode
* worked on gettext support

20100728
* worked on esedbexport export mode

20100727
* moved value debug print to libfvalue
* updated libfdatetime
* worked on index support

20100726
* worked on libfvalue integration
* small performance increase due to cache tuning
* updated msvscpp files

20100725
* updated common
* updated include/error.h and liberror
* updated libuna, libbfio, libfdata, libfdatetime
* split column definition and record value
* worked on libfvalue integration

20100715
* updated libuna

20100714
* added get_table_by_name function
* updated libuna
* fix for open/close/open

20100713
* configure.ac added stat check
* updated common, libsystem, libuna, libbfio, libfdata, libfdatetime,
  libfmapi, libfwnt
* updated array and list type
* changes for updates
* fixed FDP mismatch issue
* updated msvscpp files

20100628
* update for libfmapi

20100627
* updated libuna, libbfio
* code clean up
* added libfmapi

20100626
* worked on big-endian support for aligned XOR-32
* updated macosx files

20100625
* code clean up
  - removed API codepage functions, not needed
  - worked on windows UTF-16 support
  - added several UTF-16 API functions
  - removed page tree values, data definition and tree type
  - create catalog object
  - create database object
* updated msvscpp files
* updated libfdatetime

20100624
* added multi value offset 0x8000 flag support
* esedbexport: added option to export specific table
* updated libfdatetime
* worked on libfwnt

20100623
* worked on libfdata tree integration
* added memory alignment support to XOR32 calculation

20100622
* worked on libfdata tree integration

20100621
* updated libfdata, libbfio
* updated array type
* worked on libfdata fixed list

20100529
* changed libdatablock into libfdata
* worked on libfdata
* fixes for non-debug output
* remove attach/detach functions

20100528
* worked on libdatablock

20100527
* worked on libdatablock

20100526
* worked on reading backup database (file) header
* fixed issue in page key lookup function
* support for additional Windows Search compressed values
* changes for handling root page flag
* changes for handling database with empty catalog

20100525
* fixed issues in page key lookup function
* added error tolerance for non-supported catalog types

20100524
* worked on storing page tree values as a hierarchy
* moved bfio handle to item layer

20100522
* added support for default value
  - read from catalog
* clean up of long value page tree code
* worked on storing page tree values as a hierarchy

20100521
* worked on template table support
* fixed memory leak in libesedb_page_tree_read_leaf_page_values
* worked on large database support
  - branch pages

20100520
* worked on large database support
  - changed page number to 64-bit value
* fixed checksum calculation for new format, old page
* updated msvscpp files
* worked on template table support

20100519
* worked on Windows Vista Search support
* worked on long value support

20100518
* worked on long value support

20100517
* worked on long value support

20100516
* worked on Windows Search index-based compression
* worked on long value support

20100515
* worked on Windows Search index-based compression
* worked on long value support

20100514
* updated common, libcstring, liberror, libnotify, libsystem, libuna
  libbfio, libfdatetime
* renamed libfwintype to libfguid
* changed amount of in number of
* moved bfio handle from io handle to file
* worked on long value support

20100407
* worked on refactoring file io handle out of io handle

20100402
* fixed non 4 byte modulus sized buffers issue in XOR32

20100328
* added libcstring
* updated liberror, libnotify, libsystem, libfdatetime, libuna, libbfio
* removed common/narrow_string.h common/wide_string.h
* worked on libcstring support

20100302
* worked on windows 7 engine support

20100301
* worked on windows 7 engine support

20100227
* worked on windows 7 engine support
* enlarged filetime string to 24

20100224
* worked on windows 7 engine support

20100223
* worked on windows 7 engine support

20100222
* 2010 update and email change
* updated common, liberror, libnotify, libuna, libbfio, libsystem
* updated array, list and tree type
* worked on libnotify update
* worked on windows 7 engine support

20091130
* worked on long value support

20091129
* worked on Windows Search
* worked on multi value support
* worked on long value support
* worked on file format

20091127
* worked on Windows Search

20091125
* worked on file format

20091124
* worked on file format
  - data type definition with fixed and variable size values
    without corresponding definition
  - worked on long value support
* fix for reading files without debug mode

20091123
* worked on file format
* changes for MSVSCPP compilation

20091121
* worked on support of Windows Search Vista database
  - added ASCII 7-bit compression support
* fixed error regarding variable size data type size

20091120
* worked on file format
* fixed ECC for 32-bit architectures
* worked on support of Windows Search Vista database
* fixed memory leak in clean up of index page tree

20091119
* worked on file format
* worked on ECC
* fixed possible memory leak on error
* worked on handling ASCII 7-bit compression
  - additional findings regarding leading byte 0xa0
  - now handles extended ascii strings with leading byte 0x01

20091118
* worked on file format

20091116
* worked on file format

20091115
* updated common, libuna, libbfio, liberror, libnotify, libsystem
  libdatetime
* removed All rights reserved
* updated codepage header
* removed item reference lists and list elements
* replaces endian.h by byte_stream.h
* updated float conversions
* worked on support for callback catalog type

20091013
* some textual corrections

20091012
* change for version 0x620 revision 0x0b

20091009
* worked on EDB revision 2 version of tagged data type definitions

20091008
* added support for empty space tree header
* added support for default value of tagged data type definition
* improved column identifier check in data type definition
* worked on EWF revision 2 version of tagged data type definitions

20091007
* added column get type
* changed output of esedbinfo to print column type

20091006
* worked on page tree support

20091005
* added support for parent pages

20091004
* added missing libesedb_types.h to dist

20091003
* updated libbfio
* corrected license in several of the esedbtool handles
* updated acinclude

20091002
* worked on exporting Windows Search database
* worked on record API

20091001
* worked on page values and data definition types (dynamic version)
* worked on esedbexport
* worked on record API

20090930
* fixed possible memory leak of libbfio handle
* worked on page values and data definition types (dynamic version)
* worked on esedbexport
* worked on record API

20090927
* updated libbfio and libsystem

20090925
* worked on page values and data definition types

20090922
* worked on page values and data definition types

20090921
* worked on page values and data definition types

20090920
* worked on page values and data definition types

20090919
* worked on page values and data definition types
* worked on reading the catalog
* esedbinfo now shows
  - version, revision
  - creation version, revision
  - page size
  - table names
  - index names

20090918
* worked on page values and data definition types

20090917
* worked on page trees
* worked on page values and data definition types
* refactored creation of array out of libesedb_page_read_tags

20090916
* worked on unknown values in file header
* worked on page values and data definition types

20090915
* worked on table support
* implement XOR-32 checksum support
* worked on unknown values in file header
* worked on page values and data definition types

20090914
* worked on page trees
* worked on page values and data definition types

20090913
* initial version based on liblnk

